diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java
index 77a952b03b67a031772d46857269ae92fbfa3d82..9ca1191599e704e771f5e46b370b5dcc922d78b2 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerState.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java
@@ -1662,9 +1662,10 @@ public class PeerState {
     }
     
     /**
-     *  Caller should synch
+     *  Locks this.
      */
     private boolean locked_shouldSend(OutboundMessageState state, long now, boolean resetWindow) {
+        synchronized(this) {
             if (allocateSendingBytes(state, now, resetWindow)) {
                 if (_log.shouldLog(Log.DEBUG))
                     _log.debug(_remotePeer + " Allocation allowed with " 
@@ -1683,6 +1684,7 @@ public class PeerState {
                               + " for message " + state.getMessageId() + ": " + state);
                 return false;
             }
+        }
     }
     
     /**