diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java
index 013108498a54e54bf174656e276f7f3948f21865..b2d2260efc3c1e183d3d0ee4154d2bb826166653 100644
--- a/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java
+++ b/router/java/src/net/i2p/router/transport/tcp/TCPConnection.java
@@ -399,7 +399,11 @@ class TCPConnection implements I2NPMessageReader.I2NPMessageEventListener {
         _transport.connectionClosed(this);
     }
     
-    List getPendingMessages() { return _toBeSent; }
+    List getPendingMessages() { 
+        synchronized (_toBeSent) {
+            return new ArrayList(_toBeSent); 
+        }
+    }
     
     public void disconnected(I2NPMessageReader reader) {
         if (_log.shouldLog(Log.WARN))
@@ -460,7 +464,7 @@ class TCPConnection implements I2NPMessageReader.I2NPMessageEventListener {
         
         private OutNetMessage getNext() {
             OutNetMessage msg = null;
-            while (msg == null) {
+            while ( (msg == null) && (_running) ) {
                 synchronized (_toBeSent) {
                     if (_toBeSent.size() <= 0) {
                         try {