diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java index 9388d06d2..6dd3aa987 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigNetHelper.java @@ -100,7 +100,7 @@ public class ConfigNetHelper extends HelperBase { } public String getTcpAutoIPChecked(int mode) { - boolean enabled = TransportManager.enableNTCP(_context); + boolean enabled = TransportManager.isNTCPEnabled(_context); String hostname = _context.getProperty(PROP_I2NP_NTCP_HOSTNAME); boolean specified = hostname != null && hostname.length() > 0; String auto = _context.getProperty(PROP_I2NP_NTCP_AUTO_IP, "false"); diff --git a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java index 49790beef..9beb7daf8 100644 --- a/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java +++ b/router/java/src/net/i2p/router/networkdb/reseed/Reseeder.java @@ -3,6 +3,7 @@ package net.i2p.router.networkdb.reseed; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; +import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -278,7 +279,7 @@ public class Reseeder { if (fetched % 60 == 0) System.out.println(); } - } catch (Exception e) { + } catch (IOException e) { errors++; } } @@ -298,20 +299,20 @@ public class Reseeder { } /* Since we don't return a value, we should always throw an exception if something fails. */ - private void fetchSeed(String seedURL, String peer) throws Exception { + private void fetchSeed(String seedURL, String peer) throws IOException { URL url = new URL(seedURL + (seedURL.endsWith("/") ? "" : "/") + "routerInfo-" + peer + ".dat"); byte data[] = readURL(url); if (data == null) { // Logging deprecated here since attemptFailed() provides better info _log.debug("Failed fetching seed: " + url.toString()); - throw new Exception ("Failed fetching seed."); + throw new IOException("Failed fetching seed."); } //System.out.println("read: " + (data != null ? data.length : -1)); writeSeed(peer, data); } - private byte[] readURL(URL url) throws Exception { + private byte[] readURL(URL url) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(4*1024); EepGet get; @@ -338,15 +339,21 @@ public class Reseeder { return null; } - private void writeSeed(String name, byte data[]) throws Exception { + private void writeSeed(String name, byte data[]) throws IOException { String dirName = "netDb"; // _context.getProperty("router.networkDatabase.dbDir", "netDb"); File netDbDir = new SecureDirectory(_context.getRouterDir(), dirName); if (!netDbDir.exists()) { boolean ok = netDbDir.mkdirs(); } - FileOutputStream fos = new SecureFileOutputStream(new File(netDbDir, "routerInfo-" + name + ".dat")); - fos.write(data); - fos.close(); + FileOutputStream fos = null; + try { + fos = new SecureFileOutputStream(new File(netDbDir, "routerInfo-" + name + ".dat")); + fos.write(data); + } finally { + try { + if (fos != null) fos.close(); + } catch (IOException ioe) {} + } } } diff --git a/router/java/src/net/i2p/router/peermanager/PeerProfile.java b/router/java/src/net/i2p/router/peermanager/PeerProfile.java index 6f7fe54bb..a2665004b 100644 --- a/router/java/src/net/i2p/router/peermanager/PeerProfile.java +++ b/router/java/src/net/i2p/router/peermanager/PeerProfile.java @@ -484,14 +484,17 @@ public class PeerProfile { @Override public int hashCode() { return (_peer == null ? 0 : _peer.hashCode()); } + @Override public boolean equals(Object obj) { - if (obj == null) return false; - if (obj.getClass() != PeerProfile.class) return false; - if (_peer == null) return false; + if (obj == null || + (!(obj instanceof PeerProfile)) || + _peer == null) + return false; PeerProfile prof = (PeerProfile)obj; return _peer.equals(prof.getPeer()); } + @Override public String toString() { return "Profile: " + getPeer().toBase64(); } diff --git a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java index e012fab49..592c1f267 100644 --- a/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java +++ b/router/java/src/net/i2p/router/peermanager/ProfilePersistenceHelper.java @@ -1,9 +1,11 @@ package net.i2p.router.peermanager; +import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; +import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.util.HashSet; @@ -270,11 +272,12 @@ class ProfilePersistenceHelper { } private void loadProps(Properties props, File file) { + InputStream fin = null; try { - FileInputStream fin = new FileInputStream(file); + fin = new BufferedInputStream(new FileInputStream(file), 1); + fin.mark(1); int c = fin.read(); - fin.close(); - fin = new FileInputStream(file); // ghetto mark+reset + fin.reset(); if (c == '#') { // uncompressed if (_log.shouldLog(Log.INFO)) @@ -289,6 +292,10 @@ class ProfilePersistenceHelper { } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) _log.warn("Error loading properties from " + file.getName(), ioe); + } finally { + try { + if (fin != null) fin.close(); + } catch (IOException e) {} } } diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index 094f526c7..8a90adc37 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -215,7 +215,7 @@ public class CommSystemFacadeImpl extends CommSystemFacade { * This should really be moved to ntcp/NTCPTransport.java, why is it here? */ public static RouterAddress createNTCPAddress(RouterContext ctx) { - if (!TransportManager.enableNTCP(ctx)) return null; + if (!TransportManager.isNTCPEnabled(ctx)) return null; String name = ctx.router().getConfigSetting(PROP_I2NP_NTCP_HOSTNAME); String port = ctx.router().getConfigSetting(PROP_I2NP_NTCP_PORT); /* diff --git a/router/java/src/net/i2p/router/transport/TransportImpl.java b/router/java/src/net/i2p/router/transport/TransportImpl.java index 7ac7d05b2..fef585022 100644 --- a/router/java/src/net/i2p/router/transport/TransportImpl.java +++ b/router/java/src/net/i2p/router/transport/TransportImpl.java @@ -512,7 +512,7 @@ public abstract class TransportImpl implements Transport { public void markUnreachable(Hash peer) { long now = _context.clock().now(); synchronized (_unreachableEntries) { - _unreachableEntries.put(peer, new Long(now)); + _unreachableEntries.put(peer, Long.valueOf(now)); } markWasUnreachable(peer, true); } diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index a682840b1..a0a7db519 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -46,10 +46,10 @@ public class TransportManager implements TransportEventListener { private RouterContext _context; private UPnPManager _upnpManager; + /** default true */ public final static String PROP_ENABLE_UDP = "i2np.udp.enable"; + /** default true */ public final static String PROP_ENABLE_NTCP = "i2np.ntcp.enable"; - public final static String DEFAULT_ENABLE_NTCP = "true"; - public final static String DEFAULT_ENABLE_UDP = "true"; /** default true */ public final static String PROP_ENABLE_UPNP = "i2np.upnp.enable"; @@ -80,37 +80,33 @@ public class TransportManager implements TransportEventListener { } private void configTransports() { - String enableUDP = _context.router().getConfigSetting(PROP_ENABLE_UDP); - if (enableUDP == null) - enableUDP = DEFAULT_ENABLE_UDP; - if ("true".equalsIgnoreCase(enableUDP)) { + boolean enableUDP = _context.getBooleanPropertyDefaultTrue(PROP_ENABLE_UDP); + if (enableUDP) { UDPTransport udp = new UDPTransport(_context); addTransport(udp); initializeAddress(udp); } - if (enableNTCP(_context)) + if (isNTCPEnabled(_context)) addTransport(new NTCPTransport(_context)); if (_transports.isEmpty()) _log.log(Log.CRIT, "No transports are enabled"); } - public static boolean enableNTCP(RouterContext ctx) { - String enableNTCP = ctx.router().getConfigSetting(PROP_ENABLE_NTCP); - if (enableNTCP == null) - enableNTCP = DEFAULT_ENABLE_NTCP; - return "true".equalsIgnoreCase(enableNTCP); + public static boolean isNTCPEnabled(RouterContext ctx) { + return ctx.getBooleanPropertyDefaultTrue(PROP_ENABLE_NTCP); } - private static void initializeAddress(Transport t) { + private void initializeAddress(Transport t) { String ips = Addresses.getAnyAddress(); if (ips == null) return; - InetAddress ia = null; + InetAddress ia; try { ia = InetAddress.getByName(ips); - } catch (UnknownHostException e) {return;} - if (ia == null) + } catch (UnknownHostException e) { + _log.error("UDP failed to bind to local address", e); return; + } byte[] ip = ia.getAddress(); t.externalAddressReceived(Transport.SOURCE_INTERFACE, ip, 0); } diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index d13a51cec..c2ccf03f1 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -554,7 +554,10 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis return retval; } - /** non-blocking */ + /** + * non-blocking + * @param ports non-null + */ public void onChangePublicPorts(Set ports, ForwardPortCallback cb) { Set portsToDumpNow = null; Set portsToForwardNow = null; @@ -568,7 +571,7 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis portsToForward = ports; portsToForwardNow = ports; portsToDumpNow = null; - } else if(ports == null || ports.isEmpty()) { + } else if(ports.isEmpty()) { portsToDumpNow = portsToForward; portsToForward = ports; portsToForwardNow = null; diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java index 7996a4556..fbd0d7db2 100644 --- a/router/java/src/net/i2p/router/transport/UPnPManager.java +++ b/router/java/src/net/i2p/router/transport/UPnPManager.java @@ -87,8 +87,9 @@ public class UPnPManager { if (!_isRunning) return; Set forwards = new HashSet(ports.size()); - for (String style : ports.keySet()) { - int port = ports.get(style).intValue(); + for (Map.Entry entry : ports.entrySet()) { + String style = entry.getKey(); + int port = entry.getValue().intValue(); int protocol = -1; if ("SSU".equals(style)) protocol = ForwardPort.PROTOCOL_UDP_IPV4; @@ -136,8 +137,9 @@ public class UPnPManager { _log.debug("No external address returned"); } - for (ForwardPort fp : statuses.keySet()) { - ForwardPortStatus fps = statuses.get(fp); + for (Map.Entry entry : statuses.entrySet()) { + ForwardPort fp = entry.getKey(); + ForwardPortStatus fps = entry.getValue(); if (_log.shouldLog(Log.DEBUG)) _log.debug(fp.name + " " + fp.protocol + " " + fp.portNumber + " status: " + fps.status + " reason: " + fps.reasonString + " ext port: " + fps.externalPort); diff --git a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java index 8de07fe6e..d6109c640 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EstablishState.java @@ -69,7 +69,7 @@ import net.i2p.util.Log; * NOTE: Check info is unused. * */ -public class EstablishState { +class EstablishState { private RouterContext _context; private Log _log; diff --git a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java index 29592bf52..eeeef56c1 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java +++ b/router/java/src/net/i2p/router/transport/ntcp/EventPumper.java @@ -26,7 +26,7 @@ import net.i2p.util.Log; /** * */ -public class EventPumper implements Runnable { +class EventPumper implements Runnable { private RouterContext _context; private Log _log; private volatile boolean _alive; diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index e0e734101..a24b3d972 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -53,7 +53,7 @@ import net.i2p.util.Log; * * */ -public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { +class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { private final RouterContext _context; private final Log _log; private SocketChannel _chan; @@ -1088,15 +1088,6 @@ public class NTCPConnection implements FIFOBandwidthLimiter.CompleteListener { // enqueueInfoMessage(); // this often? } - @Override - public int hashCode() { return System.identityHashCode(this); } - @Override - public boolean equals(Object obj) { - if(obj == null) return false; - if(obj.getClass() != NTCPConnection.class) return false; - return obj == this; - } - private static final int MAX_HANDLERS = 4; private final static LinkedBlockingQueue _i2npHandlers = new LinkedBlockingQueue(MAX_HANDLERS); diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java index 374c7a5ba..24b86fd5b 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPSendFinisher.java @@ -23,7 +23,7 @@ import net.i2p.util.Log; * * @author zzz */ -public class NTCPSendFinisher { +class NTCPSendFinisher { private static final int MIN_THREADS = 1; private static final int MAX_THREADS = 4; private final I2PAppContext _context; @@ -31,7 +31,11 @@ public class NTCPSendFinisher { private final Log _log; private static int _count; private ThreadPoolExecutor _executor; - private static int _threads; + private static final int THREADS; + static { + long maxMemory = Runtime.getRuntime().maxMemory(); + THREADS = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); + } public NTCPSendFinisher(I2PAppContext context, NTCPTransport transport) { _context = context; @@ -42,9 +46,7 @@ public class NTCPSendFinisher { public void start() { _count = 0; - long maxMemory = Runtime.getRuntime().maxMemory(); - _threads = (int) Math.max(MIN_THREADS, Math.min(MAX_THREADS, 1 + (maxMemory / (32*1024*1024)))); - _executor = new CustomThreadPoolExecutor(_threads); + _executor = new CustomThreadPoolExecutor(THREADS); } public void stop() { @@ -73,7 +75,7 @@ public class NTCPSendFinisher { private static class CustomThreadFactory implements ThreadFactory { public Thread newThread(Runnable r) { Thread rv = Executors.defaultThreadFactory().newThread(r); - rv.setName("NTCPSendFinisher " + (++_count) + '/' + _threads); + rv.setName("NTCPSendFinisher " + (++_count) + '/' + THREADS); rv.setDaemon(true); return rv; } diff --git a/router/java/src/net/i2p/router/transport/udp/ACKSender.java b/router/java/src/net/i2p/router/transport/udp/ACKSender.java index d6035766d..33fd401df 100644 --- a/router/java/src/net/i2p/router/transport/udp/ACKSender.java +++ b/router/java/src/net/i2p/router/transport/udp/ACKSender.java @@ -2,6 +2,7 @@ package net.i2p.router.transport.udp; import java.util.HashSet; import java.util.List; +import java.util.NoSuchElementException; import java.util.Set; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; @@ -120,7 +121,7 @@ class ACKSender implements Runnable { try { // bulk operations may throw an exception _peersToACK.addAll(notYet); - } catch (Exception e) {} + } catch (NoSuchElementException nsee) {} notYet.clear(); break; } else { diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index b613208b1..24e0efe87 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -641,7 +641,7 @@ class EstablishmentManager { private void handlePendingIntro(OutboundEstablishState state) { long nonce = _context.random().nextLong(MAX_NONCE); while (true) { - OutboundEstablishState old = _liveIntroductions.putIfAbsent(new Long(nonce), state); + OutboundEstablishState old = _liveIntroductions.putIfAbsent(Long.valueOf(nonce), state); if (old != null) { nonce = _context.random().nextLong(MAX_NONCE); } else { @@ -669,7 +669,7 @@ class EstablishmentManager { } public void timeReached() { // remove only if value equal to state - boolean removed = _liveIntroductions.remove(new Long(_nonce), _state); + boolean removed = _liveIntroductions.remove(Long.valueOf(_nonce), _state); if (removed) { if (_log.shouldLog(Log.DEBUG)) _log.debug("Send intro for " + _state.getRemoteHostId().toString() + " timed out"); @@ -681,7 +681,7 @@ class EstablishmentManager { void receiveRelayResponse(RemoteHostId bob, UDPPacketReader reader) { long nonce = reader.getRelayResponseReader().readNonce(); - OutboundEstablishState state = _liveIntroductions.remove(new Long(nonce)); + OutboundEstablishState state = _liveIntroductions.remove(Long.valueOf(nonce)); if (state == null) return; // already established diff --git a/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java index bc0ddc5f5..f685c9e78 100644 --- a/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/InboundMessageFragments.java @@ -100,7 +100,7 @@ class InboundMessageFragments /*implements UDPTransport.PartialACKSource */{ for (int i = 0; i < fragments; i++) { long mid = data.readMessageId(i); - Long messageId = new Long(mid); + Long messageId = Long.valueOf(mid); if (_recentlyCompletedMessages.isKnown(mid)) { _context.statManager().addRateData("udp.ignoreRecentDuplicate", 1, 0); diff --git a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java index 326c43f15..b39f44de9 100644 --- a/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java +++ b/router/java/src/net/i2p/router/transport/udp/IntroductionManager.java @@ -53,7 +53,7 @@ class IntroductionManager { _log.debug("Adding peer " + peer.getRemoteHostId() + ", weRelayToThemAs " + peer.getWeRelayToThemAs() + ", theyRelayToUsAs " + peer.getTheyRelayToUsAs()); if (peer.getWeRelayToThemAs() > 0) - _outbound.put(new Long(peer.getWeRelayToThemAs()), peer); + _outbound.put(Long.valueOf(peer.getWeRelayToThemAs()), peer); if (peer.getTheyRelayToUsAs() > 0) { _inbound.add(peer); } @@ -65,14 +65,14 @@ class IntroductionManager { _log.debug("removing peer " + peer.getRemoteHostId() + ", weRelayToThemAs " + peer.getWeRelayToThemAs() + ", theyRelayToUsAs " + peer.getTheyRelayToUsAs()); if (peer.getWeRelayToThemAs() > 0) - _outbound.remove(new Long(peer.getWeRelayToThemAs())); + _outbound.remove(Long.valueOf(peer.getWeRelayToThemAs())); if (peer.getTheyRelayToUsAs() > 0) { _inbound.remove(peer); } } public PeerState get(long id) { - return _outbound.get(new Long(id)); + return _outbound.get(Long.valueOf(id)); } /** diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java index 98daaecf9..cc43c4b2e 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java @@ -661,7 +661,6 @@ class PacketBuilder { */ public UDPPacket buildSessionDestroyPacket(PeerState peer) { UDPPacket packet = buildPacketHeader((byte)(UDPPacket.PAYLOAD_TYPE_SESSION_DESTROY << 4)); - byte data[] = packet.getPacket().getData(); int off = HEADER_SIZE; StringBuilder msg = null; diff --git a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java index 2c0138228..230c1b792 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketHandler.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketHandler.java @@ -20,14 +20,14 @@ import net.i2p.util.Log; * */ class PacketHandler { - private RouterContext _context; - private Log _log; - private UDPTransport _transport; - private UDPEndpoint _endpoint; - private EstablishmentManager _establisher; - private InboundMessageFragments _inbound; - private PeerTestManager _testManager; - private IntroductionManager _introManager; + private final RouterContext _context; + private final Log _log; + private final UDPTransport _transport; + private final UDPEndpoint _endpoint; + private final EstablishmentManager _establisher; + private final InboundMessageFragments _inbound; + private final PeerTestManager _testManager; + private final IntroductionManager _introManager; private boolean _keepReading; private final Handler[] _handlers; @@ -337,6 +337,9 @@ class PacketHandler { _state = 30; } + /** + * @param state non-null + */ private void receivePacket(UDPPacketReader reader, UDPPacket packet, InboundEstablishState state) { receivePacket(reader, packet, state, true); } @@ -345,11 +348,12 @@ class PacketHandler { * Inbound establishing conn * Decrypt and validate the packet then call handlePacket() * + * @param state non-null * @param allowFallback if it isn't valid for this establishment state, try as a non-establishment packet */ private void receivePacket(UDPPacketReader reader, UDPPacket packet, InboundEstablishState state, boolean allowFallback) { _state = 31; - if ( (state != null) && (_log.shouldLog(Log.DEBUG)) ) { + if (_log.shouldLog(Log.DEBUG)) { StringBuilder buf = new StringBuilder(128); buf.append("Attempting to receive a packet on a known inbound state: "); buf.append(state); @@ -388,10 +392,12 @@ class PacketHandler { /** * Outbound establishing conn * Decrypt and validate the packet then call handlePacket() + * + * @param state non-null */ private void receivePacket(UDPPacketReader reader, UDPPacket packet, OutboundEstablishState state) { _state = 35; - if ( (state != null) && (_log.shouldLog(Log.DEBUG)) ) { + if (_log.shouldLog(Log.DEBUG)) { StringBuilder buf = new StringBuilder(128); buf.append("Attempting to receive a packet on a known outbound state: "); buf.append(state); diff --git a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java index a3211a5a6..46b1e4666 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerTestManager.java @@ -153,7 +153,7 @@ class PeerTestManager { _log.debug("Running test with bob = " + bobIP + ":" + bobPort + " " + test.getNonce()); while (_recentTests.size() > 16) _recentTests.poll(); - _recentTests.offer(new Long(test.getNonce())); + _recentTests.offer(Long.valueOf(test.getNonce())); sendTestToBob(); @@ -432,7 +432,7 @@ class PeerTestManager { testInfo.readIP(testIP, 0); } - PeerTestState state = _activeTests.get(new Long(nonce)); + PeerTestState state = _activeTests.get(Long.valueOf(nonce)); if (state == null) { if ( (testIP == null) || (testPort <= 0) ) { @@ -441,7 +441,7 @@ class PeerTestManager { _log.debug("test IP/port are blank coming from " + from + ", assuming we are Bob and they are alice"); receiveFromAliceAsBob(from, testInfo, nonce, null); } else { - if (_recentTests.contains(new Long(nonce))) { + if (_recentTests.contains(Long.valueOf(nonce))) { // ignore the packet, as its a holdover from a recently completed locally // initiated test } else { @@ -536,7 +536,7 @@ class PeerTestManager { _log.debug("Receive from bob (" + from + ") as charlie, sending back to bob and sending to alice @ " + aliceIP + ":" + alicePort); if (isNew) { - _activeTests.put(new Long(nonce), state); + _activeTests.put(Long.valueOf(nonce), state); SimpleScheduler.getInstance().addEvent(new RemoveTest(nonce), MAX_CHARLIE_LIFETIME); } @@ -615,7 +615,7 @@ class PeerTestManager { } if (isNew) { - _activeTests.put(new Long(nonce), state); + _activeTests.put(Long.valueOf(nonce), state); SimpleScheduler.getInstance().addEvent(new RemoveTest(nonce), MAX_CHARLIE_LIFETIME); } @@ -691,7 +691,7 @@ class PeerTestManager { _nonce = nonce; } public void timeReached() { - _activeTests.remove(new Long(_nonce)); + _activeTests.remove(Long.valueOf(_nonce)); } } } diff --git a/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java b/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java index 510d712a0..837a50268 100644 --- a/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java +++ b/router/java/src/net/i2p/router/transport/udp/RemoteHostId.java @@ -28,21 +28,15 @@ final class RemoteHostId { @Override public int hashCode() { - int rv = 0; - for (int i = 0; _ip != null && i < _ip.length; i++) - rv += _ip[i] << i; - for (int i = 0; _peerHash != null && i < _peerHash.length; i++) - rv += _peerHash[i] << i; - rv += _port; - return rv; + return DataHelper.hashCode(_ip) ^ DataHelper.hashCode(_peerHash) ^ _port; } @Override public boolean equals(Object obj) { if (obj == null) - throw new NullPointerException("obj is null"); + return false; if (!(obj instanceof RemoteHostId)) - throw new ClassCastException("obj is a " + obj.getClass().getName()); + return false; RemoteHostId id = (RemoteHostId)obj; return (_port == id.getPort()) && DataHelper.eq(_ip, id.getIP()) && DataHelper.eq(_peerHash, id.getPeerHash()); } 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 0a1937db1..ded71f8a2 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPReceiver.java @@ -20,16 +20,16 @@ import net.i2p.util.SimpleTimer; * */ class UDPReceiver { - private RouterContext _context; - private Log _log; + private final RouterContext _context; + private final Log _log; private DatagramSocket _socket; private String _name; private final BlockingQueue _inboundQueue; private boolean _keepRunning; - private Runner _runner; - private UDPTransport _transport; + private final Runner _runner; + private final UDPTransport _transport; private static int __id; - private int _id; + private final int _id; private static final int TYPE_POISON = -99999; public UDPReceiver(RouterContext ctx, UDPTransport transport, DatagramSocket socket, String name) { @@ -179,8 +179,7 @@ class UDPReceiver { msg.append(queueSize); msg.append(" queued for "); msg.append(headPeriod); - if (_transport != null) - msg.append(" packet handlers: ").append(_transport.getPacketHandlerStatus()); + msg.append(" packet handlers: ").append(_transport.getPacketHandlerStatus()); _log.warn(msg.toString()); } return queueSize; 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 18886ba62..820f2ca87 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -1635,7 +1635,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final IdleInComparator _instance = new IdleInComparator(); public static final IdleInComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = r.getLastReceiveTime() - l.getLastReceiveTime(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1647,7 +1647,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final IdleOutComparator _instance = new IdleOutComparator(); public static final IdleOutComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = r.getLastSendTime() - l.getLastSendTime(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1659,7 +1659,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RateInComparator _instance = new RateInComparator(); public static final RateInComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getReceiveBps() - r.getReceiveBps(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1671,7 +1671,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RateOutComparator _instance = new RateOutComparator(); public static final RateOutComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getSendBps() - r.getSendBps(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1683,7 +1683,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final UptimeComparator _instance = new UptimeComparator(); public static final UptimeComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = r.getKeyEstablishedTime() - l.getKeyEstablishedTime(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1695,7 +1695,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final SkewComparator _instance = new SkewComparator(); public static final SkewComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = Math.abs(l.getClockSkew()) - Math.abs(r.getClockSkew()); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1707,7 +1707,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final CwndComparator _instance = new CwndComparator(); public static final CwndComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getSendWindowBytes() - r.getSendWindowBytes(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1719,7 +1719,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final SsthreshComparator _instance = new SsthreshComparator(); public static final SsthreshComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getSlowStartThreshold() - r.getSlowStartThreshold(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1731,7 +1731,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RTTComparator _instance = new RTTComparator(); public static final RTTComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getRTT() - r.getRTT(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1743,7 +1743,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final DevComparator _instance = new DevComparator(); public static final DevComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getRTTDeviation() - r.getRTTDeviation(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1755,7 +1755,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RTOComparator _instance = new RTOComparator(); public static final RTOComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getRTO() - r.getRTO(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1767,7 +1767,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final MTUComparator _instance = new MTUComparator(); public static final MTUComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getMTU() - r.getMTU(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1779,7 +1779,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final SendCountComparator _instance = new SendCountComparator(); public static final SendCountComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsTransmitted() - r.getPacketsTransmitted(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1791,7 +1791,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final RecvCountComparator _instance = new RecvCountComparator(); public static final RecvCountComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsReceived() - r.getPacketsReceived(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1803,7 +1803,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final ResendComparator _instance = new ResendComparator(); public static final ResendComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsRetransmitted() - r.getPacketsRetransmitted(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1815,7 +1815,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority private static final DupComparator _instance = new DupComparator(); public static final DupComparator instance() { return _instance; } @Override - protected int compare(PeerState l, PeerState r) { + public int compare(PeerState l, PeerState r) { long rv = l.getPacketsReceivedDuplicate() - r.getPacketsReceivedDuplicate(); if (rv == 0) // fallback on alpha return super.compare(l, r); @@ -1824,17 +1824,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority } } - private static class PeerComparator implements Comparator { - public int compare(Object lhs, Object rhs) { - if ( (lhs == null) || (rhs == null) || !(lhs instanceof PeerState) || !(rhs instanceof PeerState)) - throw new IllegalArgumentException("rhs = " + rhs + " lhs = " + lhs); - return compare((PeerState)lhs, (PeerState)rhs); - } - protected int compare(PeerState l, PeerState r) { - // base64 retains binary ordering - return l.getRemotePeer().toBase64().compareTo(r.getRemotePeer().toBase64()); + private static class PeerComparator implements Comparator { + public int compare(PeerState l, PeerState r) { + return DataHelper.compareTo(l.getRemotePeer().getData(), r.getRemotePeer().getData()); } } + private static class InverseComparator implements Comparator { private Comparator _comp; public InverseComparator(Comparator comp) { _comp = comp; } diff --git a/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java b/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java index da169db75..179066989 100644 --- a/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java +++ b/router/java/src/net/i2p/router/tunnel/BuildMessageGenerator.java @@ -21,9 +21,6 @@ import net.i2p.util.Log; * */ public class BuildMessageGenerator { - // cached, rather than creating lots of temporary Integer objects whenever we build a tunnel - public static final Integer ORDER[] = new Integer[TunnelBuildMessage.MAX_RECORD_COUNT]; - static { for (int i = 0; i < ORDER.length; i++) ORDER[i] = Integer.valueOf(i); } /** return null if it is unable to find a router's public key (etc) */ /**** diff --git a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java index 7948c5387..f4b6062f5 100644 --- a/router/java/src/net/i2p/router/tunnel/FragmentHandler.java +++ b/router/java/src/net/i2p/router/tunnel/FragmentHandler.java @@ -360,10 +360,10 @@ public class FragmentHandler { FragmentedMessage msg = null; if (fragmented) { synchronized (_fragmentedMessages) { - msg = _fragmentedMessages.get(new Long(messageId)); + msg = _fragmentedMessages.get(Long.valueOf(messageId)); if (msg == null) { msg = new FragmentedMessage(_context); - _fragmentedMessages.put(new Long(messageId), msg); + _fragmentedMessages.put(Long.valueOf(messageId), msg); } } } else { @@ -377,7 +377,7 @@ public class FragmentHandler { if (!ok) return -1; if (msg.isComplete()) { synchronized (_fragmentedMessages) { - _fragmentedMessages.remove(new Long(messageId)); + _fragmentedMessages.remove(Long.valueOf(messageId)); } if (msg.getExpireEvent() != null) SimpleTimer.getInstance().removeEvent(msg.getExpireEvent()); @@ -432,10 +432,10 @@ public class FragmentHandler { FragmentedMessage msg = null; synchronized (_fragmentedMessages) { - msg = _fragmentedMessages.get(new Long(messageId)); + msg = _fragmentedMessages.get(Long.valueOf(messageId)); if (msg == null) { msg = new FragmentedMessage(_context); - _fragmentedMessages.put(new Long(messageId), msg); + _fragmentedMessages.put(Long.valueOf(messageId), msg); } } @@ -446,7 +446,7 @@ public class FragmentHandler { if (msg.isComplete()) { synchronized (_fragmentedMessages) { - _fragmentedMessages.remove(new Long(messageId)); + _fragmentedMessages.remove(Long.valueOf(messageId)); } if (msg.getExpireEvent() != null) SimpleTimer.getInstance().removeEvent(msg.getExpireEvent()); @@ -529,7 +529,7 @@ public class FragmentHandler { public void timeReached() { boolean removed = false; synchronized (_fragmentedMessages) { - removed = (null != _fragmentedMessages.remove(new Long(_msg.getMessageId()))); + removed = (null != _fragmentedMessages.remove(Long.valueOf(_msg.getMessageId()))); } synchronized (_msg) { if (removed && !_msg.getReleased()) { diff --git a/router/java/src/net/i2p/router/tunnel/HopConfig.java b/router/java/src/net/i2p/router/tunnel/HopConfig.java index 532bdfe20..3ac96bf28 100644 --- a/router/java/src/net/i2p/router/tunnel/HopConfig.java +++ b/router/java/src/net/i2p/router/tunnel/HopConfig.java @@ -73,7 +73,7 @@ public class HopConfig { } public void setSendTunnelId(byte id[]) { _sendTunnelId = id; } - private TunnelId getTunnel(byte id[]) { + private static TunnelId getTunnel(byte id[]) { if (id == null) return null; else diff --git a/router/java/src/net/i2p/router/tunnel/HopProcessor.java b/router/java/src/net/i2p/router/tunnel/HopProcessor.java index 205339d7f..eac1f71da 100644 --- a/router/java/src/net/i2p/router/tunnel/HopProcessor.java +++ b/router/java/src/net/i2p/router/tunnel/HopProcessor.java @@ -77,7 +77,7 @@ public class HopProcessor { boolean okIV = _validator.receiveIV(orig, offset, orig, offset + IV_LENGTH); if (!okIV) { if (_log.shouldLog(Log.WARN)) - _log.warn("Invalid IV received on tunnel " + _config.getReceiveTunnelId()); + _log.warn("Invalid IV received on tunnel " + _config.getReceiveTunnel()); return false; } diff --git a/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java b/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java index c9b28b856..6c85895c6 100644 --- a/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java +++ b/router/java/src/net/i2p/router/tunnel/TrivialPreprocessor.java @@ -52,92 +52,11 @@ public class TrivialPreprocessor implements TunnelGateway.QueuePreprocessor { * NOTE: Unused here, see BatchedPreprocessor override, super is not called. */ public boolean preprocessQueue(List pending, TunnelGateway.Sender sender, TunnelGateway.Receiver rec) { - if (true) throw new IllegalArgumentException("unused, right?"); - long begin = System.currentTimeMillis(); - StringBuilder buf = null; - if (_log.shouldLog(Log.DEBUG)) { - buf = new StringBuilder(256); - buf.append("Trivial preprocessing of ").append(pending.size()).append(" "); - } - while (!pending.isEmpty()) { - TunnelGateway.Pending msg = pending.remove(0); - long beforePreproc = System.currentTimeMillis(); - byte preprocessed[][] = preprocess(msg); - long afterPreproc = System.currentTimeMillis(); - if (buf != null) - buf.append("preprocessed into " + preprocessed.length + " fragments after " + (afterPreproc-beforePreproc) + ". "); - for (int i = 0; i < preprocessed.length; i++) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug("Preprocessed: fragment " + i + "/" + (preprocessed.length-1) + " in " - + msg.getMessageId() + ": " - + " send through " + sender + " receive with " + rec); - //Base64.encode(preprocessed[i])); - long beforeSend = System.currentTimeMillis(); - long id = sender.sendPreprocessed(preprocessed[i], rec); - long afterSend = System.currentTimeMillis(); - if (buf != null) - buf.append("send of " + msg.getMessageId() + " took " + (afterSend-beforeSend) + ". "); - msg.addMessageId(id); - } - notePreprocessing(msg.getMessageId(), msg.getFragmentNumber(), preprocessed.length, msg.getMessageIds(), null); - if (preprocessed.length != msg.getFragmentNumber() + 1) { - throw new RuntimeException("wtf, preprocessed " + msg.getMessageId() + " into " - + msg.getFragmentNumber() + "/" + preprocessed.length + " fragments, size = " - + msg.getData().length); - } - if (buf != null) - buf.append("all fragments sent after " + (System.currentTimeMillis()-afterPreproc) + ". "); - } - if (buf != null) { - buf.append("queue preprocessed after " + (System.currentTimeMillis()-begin) + "."); - _log.debug(buf.toString()); - } - return false; + throw new IllegalArgumentException("unused, right?"); } protected void notePreprocessing(long messageId, int numFragments, int totalLength, List messageIds, String msg) {} - /* - * @deprecated unused except by above - */ - private byte[][] preprocess(TunnelGateway.Pending msg) { - List fragments = new ArrayList(1); - - while (msg.getOffset() < msg.getData().length) { - fragments.add(preprocessFragment(msg)); - //if (_log.shouldLog(Log.DEBUG)) - // _log.debug("\n\nafter preprocessing fragment\n\n"); - } - - byte rv[][] = new byte[fragments.size()][]; - for (int i = 0; i < fragments.size(); i++) - rv[i] = fragments.get(i); - return rv; - } - - /** - * Preprocess the next available fragment off the given one in phases: - * First, write it out as { instructions + payload + random IV }, calculate the - * SHA256 of that, then move the instructions + payload to the end - * of the target, setting IV as the beginning. Then add the necessary random pad - * bytes after the IV, followed by the first 4 bytes of that SHA256, lining up - * exactly to meet the beginning of the instructions. (i hope) - * - * @deprecated unused except by above - */ - private byte[] preprocessFragment(TunnelGateway.Pending msg) { - byte target[] = _dataCache.acquire().getData(); - - int offset = 0; - if (msg.getOffset() <= 0) - offset = writeFirstFragment(msg, target, offset); - else - offset = writeSubsequentFragment(msg, target, offset); - - preprocess(target, offset); - return target; - } - /** * Wrap the preprocessed fragments with the necessary padding / checksums * to act as a tunnel message. diff --git a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java index c8424d853..d736e338d 100644 --- a/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java +++ b/router/java/src/net/i2p/router/tunnel/TunnelDispatcher.java @@ -623,7 +623,7 @@ public class TunnelDispatcher implements Service { // drop in proportion to size w.r.t. a standard 1024-byte message // this is a little expensive but we want to adjust the curve between 0 and 1 // Most messages are 1024, only at the OBEP do we see other sizes - if (len != 1024d) + if ((int)len != 1024) pctDrop = (float) Math.pow(pctDrop, 1024d / len); float rand = _context.random().nextFloat(); boolean reject = rand <= pctDrop; diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java index 8b08b6ec8..19505c0c7 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildExecutor.java @@ -294,7 +294,9 @@ class BuildExecutor implements Runnable { if (!_repoll) { if (_log.shouldLog(Log.DEBUG)) _log.debug("No tunnel to build with (allowed=" + allowed + ", wanted=" + wanted.size() + ", pending=" + pendingRemaining + "), wait for a while"); - _currentlyBuilding.wait(1*1000+_context.random().nextInt(1*1000)); + try { + _currentlyBuilding.wait(1*1000+_context.random().nextInt(1*1000)); + } catch (InterruptedException ie) {} } } } else { @@ -369,7 +371,7 @@ class BuildExecutor implements Runnable { wanted.clear(); pools.clear(); - } catch (Exception e) { + } catch (RuntimeException e) { if (_log.shouldLog(Log.CRIT)) _log.log(Log.CRIT, "B0rked in the tunnel builder", e); } @@ -459,7 +461,7 @@ class BuildExecutor implements Runnable { for (int i = 0; i < 32; i++) _recentBuildIds.remove(0); } - _recentBuildIds.add(new Long(id)); + _recentBuildIds.add(Long.valueOf(id)); } } } @@ -483,7 +485,7 @@ class BuildExecutor implements Runnable { public boolean wasRecentlyBuilding(long replyId) { synchronized (_recentBuildIds) { - return _recentBuildIds.contains(new Long(replyId)); + return _recentBuildIds.contains(Long.valueOf(replyId)); } } diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java index 874c2aebc..148330d90 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java +++ b/router/java/src/net/i2p/router/tunnel/pool/BuildRequestor.java @@ -25,9 +25,9 @@ import net.i2p.util.VersionComparator; * */ class BuildRequestor { - private static final List ORDER = new ArrayList(BuildMessageGenerator.ORDER.length); + private static final List ORDER = new ArrayList(TunnelBuildMessage.MAX_RECORD_COUNT); static { - for (int i = 0; i < BuildMessageGenerator.ORDER.length; i++) + for (int i = 0; i < TunnelBuildMessage.MAX_RECORD_COUNT; i++) ORDER.add(Integer.valueOf(i)); } private static final int PRIORITY = 500; diff --git a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java index e6f3e599e..03fa5bd71 100644 --- a/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java +++ b/router/java/src/net/i2p/router/tunnel/pool/TunnelPool.java @@ -464,9 +464,9 @@ public class TunnelPool { * but we use latest expiration first, since we need to sort them by that anyway. * */ - class LeaseComparator implements Comparator { - public int compare(Object l, Object r) { - return ((Lease)r).getEndDate().compareTo(((Lease)l).getEndDate()); + private static class LeaseComparator implements Comparator { + public int compare(Lease l, Lease r) { + return r.getEndDate().compareTo(l.getEndDate()); } }