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";