diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
index 5a51e9c9bfd7c031c754dc20bd1d4daf442ee37c..75564fb9efe2d5344fb2050c62f3c700e6e6e69d 100644
--- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
+++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java
@@ -36,6 +36,8 @@ public class NTCPTransport extends TransportImpl {
     private Log _log;
     private SharedBid _fastBid;
     private SharedBid _slowBid;
+    /** save some conns for inbound */
+    private SharedBid _nearCapacityBid;
     private SharedBid _transientFail;
     private final Object _conLock;
     private Map<Hash, NTCPConnection> _conByIdent;
@@ -133,6 +135,7 @@ public class NTCPTransport extends TransportImpl {
 
         _fastBid = new SharedBid(25); // best
         _slowBid = new SharedBid(70); // better than ssu unestablished, but not better than ssu established
+        _nearCapacityBid = new SharedBid(90); // not better than ssu - save our conns for inbound
         _transientFail = new SharedBid(TransportBid.TRANSIENT_FAIL);
     }
 
@@ -308,7 +311,10 @@ public class NTCPTransport extends TransportImpl {
 
         if (_log.shouldLog(Log.DEBUG))
             _log.debug("slow bid when trying to send to " + peer.toBase64());
-        return _slowBid;
+        if (haveCapacity())
+            return _slowBid;
+        else
+            return _nearCapacityBid;
     }
 
     public boolean allowConnection() {
@@ -660,7 +666,7 @@ public class NTCPTransport extends TransportImpl {
             //byte[] ip = getIP(con.getRemotePeer().calculateHash());
             //if (ip != null)
             //    buf.append(' ').append(_context.blocklist().toStr(ip));
-            buf.append("</code></td><td align=\"center\"><code>");
+            buf.append("</td><td align=\"center\"><code>");
             if (con.isInbound())
                 buf.append("in");
             else
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index 3871fbdc0a885e6df4d8673cee00785cbf57dc30..e1e816d1aa8be6a643ccdcb959ac770d7210e9ec 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -81,6 +81,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
     private TransportBid _fastBid;
     /** shared slow bid for unconnected peers when we want to prefer UDP */
     private TransportBid _slowBid;
+    /** save some conns for inbound */
+    private TransportBid _nearCapacityBid;
     /** shared slow bid for unconnected peers */
     private TransportBid _slowestBid;
     /** shared fast bid for unconnected peers when we want to prefer UDP */
@@ -170,7 +172,8 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         _slowBid = new SharedBid(65);
         _fastPreferredBid = new SharedBid(15);
         _slowPreferredBid = new SharedBid(20);
-        _slowestBid = new SharedBid(1000);
+        _slowestBid = new SharedBid(80);
+        _nearCapacityBid = new SharedBid(100);
         _transientFail = new SharedBid(TransportBid.TRANSIENT_FAIL);
         
         _fragments = new OutboundMessageFragments(_context, this, _activeThrottle);
@@ -988,8 +991,10 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                 return _slowPreferredBid;
             else if (preferUDP())
                 return _slowBid;
-            else
+            else if (haveCapacity())
                 return _slowestBid;
+            else
+                return _nearCapacityBid;
         }
     }
 
@@ -1760,7 +1765,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         buf.append("<tr><td><b><a href=\"#def.peer\">Peer</a></b>");
         if (sortFlags != FLAG_ALPHA)
             buf.append(" <a href=\"").append(urlBase).append("?sort=0\">V</a> ");
-        buf.append("</td><td>dir/intro</td><td><b><a href=\"#def.idle\">Idle</a></b>");
+        buf.append("</td><td><b><a href=\"#def.dir\">Dir/Intro</a></b></td><td><b><a href=\"#def.idle\">Idle</a></b>");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by idle inbound", FLAG_IDLE_IN);
         buf.append("/");
         appendSortLinks(buf, urlBase, sortFlags, "Sort by idle outbound", FLAG_IDLE_OUT);
@@ -1813,7 +1818,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             //byte ip[] = peer.getRemoteIP();
             //if (ip != null)
             //    buf.append(' ').append(_context.blocklist().toStr(ip));
-            buf.append("</td><td>");
+            buf.append("</td><td><code>");
             if (peer.isInbound())
                 buf.append("in ");
             else