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 5a51e9c9b..75564fb9e 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 _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(""); + buf.append(""); 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 3871fbdc0..e1e816d1a 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("Peer"); if (sortFlags != FLAG_ALPHA) buf.append(" V "); - buf.append("dir/introIdle"); + buf.append("Dir/IntroIdle"); 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(""); + buf.append(""); if (peer.isInbound()) buf.append("in "); else