From 3d8365a473826950053e2b8256e4d94a8101d8da Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Thu, 18 Feb 2010 16:32:44 +0000
Subject: [PATCH]     * HTTP Proxy: Fix blank page instead of error page for
 eepsite unreachable

---
 .../java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java       | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java
index f408b60154..6be20ba8bb 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java
@@ -124,11 +124,14 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
             OutputStream i2pout = i2ps.getOutputStream(); //new BufferedOutputStream(i2ps.getOutputStream(), MAX_PACKET_SIZE);
             if (initialI2PData != null) {
                 synchronized (slock) {
+                    // this does not increment totalSent
                     i2pout.write(initialI2PData);
-                    i2pout.flush();
+                    // do NOT flush here, it will block and then onTimeout.run() won't happen on fail.
+                    //i2pout.flush();
                 }
             }
             if (initialSocketData != null) {
+                // this does not increment totalReceived
                 out.write(initialSocketData);
             }
             if (_log.shouldLog(Log.DEBUG))
@@ -150,6 +153,7 @@ 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) )
                     onTimeout.run();
             }
@@ -271,7 +275,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr
                         //if (_log.shouldLog(Log.DEBUG))
                         //    _log.debug("Flushing after sending " + len + " bytes through");
                         if (_log.shouldLog(Log.DEBUG))
-                            _log.debug(direction + ": " + len + " bytes flushed through to " 
+                            _log.debug(direction + ": " + len + " bytes flushed through " + (_toI2P ? "to " : "from ")
                                        + i2ps.getPeerDestination().calculateHash().toBase64().substring(0,6));
                         try {
                             Thread.sleep(I2PTunnel.PACKET_DELAY);
-- 
GitLab