diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java index b63dd2caeed37196f877d133f195e9e3d17b3eac..1175e0114867a846d415fbd9e450919e439e40c8 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientRunner.java @@ -42,7 +42,7 @@ public class I2PTunnelHTTPClientRunner extends I2PTunnelRunner { */ @Override protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, - Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException, IOException { + Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException { try { i2pin.close(); } catch (IOException ioe) { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java index 02a1523f679078e14fc80b57c9d26e83370ae9e8..556465762654880c92a9793a4f0d6ba4aa9f46d9 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java @@ -143,6 +143,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr InputStream i2pin = i2ps.getInputStream(); OutputStream i2pout = i2ps.getOutputStream(); //new BufferedOutputStream(i2ps.getOutputStream(), MAX_PACKET_SIZE); if (initialI2PData != null) { + // why synchronize this? we could be in here a LONG time for large initial data synchronized (slock) { // this does not increment totalSent i2pout.write(initialI2PData); @@ -182,8 +183,11 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr if (_log.shouldLog(Log.DEBUG)) _log.debug("runner has a timeout job, totalReceived = " + totalReceived + " totalSent = " + totalSent + " job = " + onTimeout); - // should we only look at totalReceived? - if ( (totalSent <= 0) && (totalReceived <= 0) ) + // Run even if totalSent > 0, as that's probably POST data. + // This will be run even if initialSocketData != null, it's the timeout job's + // responsibility to know that and decide whether or not to write to the socket. + // HTTPClient never sets initialSocketData. + if (totalReceived <= 0) onTimeout.run(); } @@ -234,7 +238,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr } protected void close(OutputStream out, InputStream in, OutputStream i2pout, InputStream i2pin, - Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException, IOException { + Socket s, I2PSocket i2ps, Thread t1, Thread t2) throws InterruptedException { try { out.flush(); } catch (IOException ioe) { diff --git a/history.txt b/history.txt index 8065cd8f83c753948c4837fa1769b0d0c37ffa67..acb2cfc5938e57c1151d4ce3b21d4eb3a7111e49 100644 --- a/history.txt +++ b/history.txt @@ -1,4 +1,5 @@ * 2011-10-19 zzz + * I2PTunnel: Fix timeout message on POST (ticket # ) * NetDB: Reduce RI max expiration again * 2011-10-18 zzz diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index f6ba057e65f9ed08d4726966df0fb1aa5720662a..ba403a9f3e8ca8adc1870180c679d516d9b1e772 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 4; + public final static long BUILD = 5; /** for example "-test" */ public final static String EXTRA = "-rc";