diff --git a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java
index 44363f2b5dae4cb8bd199dce884999320caf63c6..62a4675fa52ff9decdda54da1c456e4359fc691b 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java
@@ -254,9 +254,9 @@ class UDPReceiver {
                 try {
                     //if (_log.shouldLog(Log.INFO))
                     //    _log.info("Before blocking socket.receive on " + System.identityHashCode(packet));
-                    synchronized (Runner.this) {
+                    //synchronized (Runner.this) {
                         _socket.receive(packet.getPacket());
-                    }
+                    //}
                     int size = packet.getPacket().getLength();
                     if (_log.shouldLog(Log.INFO))
                         _log.info("After blocking socket.receive: packet is " + size + " bytes on " + System.identityHashCode(packet));
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPSender.java b/router/java/src/net/i2p/router/transport/udp/UDPSender.java
index 202609fab3f83a524cc0ae1eae4b4a0af9879beb..df017fedfc85c0f399da1e08a67013522a6d2cbd 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPSender.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPSender.java
@@ -39,7 +39,7 @@ class UDPSender {
         _context.statManager().createRateStat("udp.sendQueueFailed", "How often it was unable to add a new packet to the queue", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.sendQueueTrimmed", "How many packets were removed from the queue for being too old (duration == remaining)", "udp", UDPTransport.RATES);
         _context.statManager().createRequiredRateStat("udp.sendPacketSize", "Size of sent packets (bytes)", "udp", UDPTransport.RATES);
-        _context.statManager().createRateStat("udp.socketSendTime", "How long the actual socket.send took", "udp", UDPTransport.RATES);
+        //_context.statManager().createRateStat("udp.socketSendTime", "How long the actual socket.send took", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.sendBWThrottleTime", "How long the send is blocked by the bandwidth throttle", "udp", UDPTransport.RATES);
         _context.statManager().createRateStat("udp.sendACKTime", "How long an ACK packet is blocked for (duration == lifetime)", "udp", UDPTransport.RATES);
         // used in RouterWatchdog
@@ -161,8 +161,10 @@ class UDPSender {
         if (packet == null || !_keepRunning) return 0;
         int size = 0;
         int psz = packet.getPacket().getLength();
-        if (psz > PeerState.LARGE_MTU)
-            _log.error("Sending large UDP packet " + psz + " bytes: " + packet);
+        if (psz > PeerState.LARGE_MTU) {
+            _log.error("Dropping large UDP packet " + psz + " bytes: " + packet);
+            return 0;
+        }
         _outboundQueue.offer(packet);
         //size = _outboundQueue.size();
         //_context.statManager().addRateData("udp.sendQueueSize", size, lifetime);
@@ -214,8 +216,8 @@ class UDPSender {
                     
                     //packet.getPacket().setLength(size);
                     try {
-                        long before = _context.clock().now();
-                        synchronized (Runner.this) {
+                        //long before = _context.clock().now();
+                        //synchronized (Runner.this) {
                             // synchronization lets us update safely
                             //_log.debug("Break out datagram for " + packet);
                             DatagramPacket dp = packet.getPacket();
@@ -224,11 +226,12 @@ class UDPSender {
                             _socket.send(dp);
                             //if (_log.shouldLog(Log.DEBUG))
                             //    _log.debug("Just after socket.send of " + packet);
-                        }
-                        long sendTime = _context.clock().now() - before;
-                        _context.statManager().addRateData("udp.socketSendTime", sendTime, packet.getLifetime());
-                        if (_log.shouldLog(Log.INFO))
-                            _log.info("Sent the packet " + packet);
+                        //}
+                        //long sendTime = _context.clock().now() - before;
+                        // less than 50 microsec
+                        //_context.statManager().addRateData("udp.socketSendTime", sendTime, packet.getLifetime());
+                        if (_log.shouldLog(Log.DEBUG))
+                            _log.debug("Sent the packet " + packet);
                         long throttleTime = afterBW - acquireTime;
                         if (throttleTime > 10)
                             _context.statManager().addRateData("udp.sendBWThrottleTime", throttleTime, acquireTime - packet.getBegin());