diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java b/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java
index b747766d529b7cb04c627e01c4a6cbddb95aa03e..b1f7fd7d217ae135407e89e8a5b210724a29fd33 100644
--- a/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java
@@ -701,6 +701,9 @@ public class TCPTransport extends TransportImpl {
         PendingMessages rv = null;
         while (true) {
             synchronized (_msgs) {
+                if (_msgs.size() <= 0) {
+                    try { _msgs.wait(); } catch (InterruptedException ie) {}
+                } 
                 if (_msgs.size() > 0) {
                     for (Iterator iter = _msgs.keySet().iterator(); iter.hasNext(); ) {
                         Object key = iter.next();
@@ -717,7 +720,6 @@ public class TCPTransport extends TransportImpl {
                         }
                     }
                 }
-                try { _msgs.wait(1000); } catch (InterruptedException ie) {}
             }
         }