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