diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
index 706e7f9b196f3dfd50066919b298e1174a97ad0a..e892d75f2b6b93ef902b8828a7520db16adba2d3 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java
@@ -155,6 +155,8 @@ public class Connection {
             synchronized (_outboundPackets) {
                 if (!started)
                     _context.statManager().addRateData("stream.chokeSizeBegin", _outboundPackets.size(), timeoutMs);
+                if (start + 5*60*1000 < _context.clock().now()) // ok, 5 minutes blocking?  I dont think so
+                    return false;
                 
                 // no need to wait until the other side has ACKed us before sending the first few wsize
                 // packets through
@@ -181,7 +183,7 @@ public class Connection {
                         if (_log.shouldLog(Log.DEBUG))
                             _log.debug("Outbound window is full (" + _outboundPackets.size() + "/" + _activeResends 
                                        + "), waiting indefinitely");
-                        try { _outboundPackets.wait(); } catch (InterruptedException ie) {}
+                        try { _outboundPackets.wait(10*1000); } catch (InterruptedException ie) {}
                     }
                 } else {
                     _context.statManager().addRateData("stream.chokeSizeEnd", _outboundPackets.size(), _context.clock().now() - start);