diff --git a/apps/i2psnark/java/src/org/klomp/snark/Storage.java b/apps/i2psnark/java/src/org/klomp/snark/Storage.java index b3c4fd3e693cd46c564c2cd5755c80aa65652d3b..6b786054fca48c7e78f9196d5076a4282de21427 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Storage.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Storage.java @@ -1301,6 +1301,15 @@ public class Storage return name.compareTo(tf.name); } + @Override + public int hashCode() { return RAFfile.getAbsolutePath().hashCode(); } + + @Override + public boolean equals(Object o) { + return (o instanceof TorrentFile) && + RAFfile.getAbsolutePath().equals(((TorrentFile)o).RAFfile.getAbsolutePath()); + } + @Override public String toString() { return name; } } diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java index f1b73c1146ddddc2e6b06f204450d044f640fc64..244e76c6e045050d540e0538e70d51b090892f17 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/HTTPResponseOutputStream.java @@ -273,11 +273,10 @@ class HTTPResponseOutputStream extends FilterOutputStream { } public void run() { - ReusableGZIPInputStream _in = null; + ReusableGZIPInputStream _in = ReusableGZIPInputStream.acquire(); long written = 0; ByteArray ba = null; try { - _in = ReusableGZIPInputStream.acquire(); // blocking _in.initialize(_inRaw); ba = _cache.acquire(); @@ -294,7 +293,7 @@ class HTTPResponseOutputStream extends FilterOutputStream { _log.info("Decompressed: " + written + ", " + _in.getTotalRead() + "/" + _in.getTotalExpanded()); } catch (IOException ioe) { if (_log.shouldLog(Log.WARN)) - _log.warn("Error decompressing: " + written + ", " + (_in != null ? _in.getTotalRead() + "/" + _in.getTotalExpanded() : ""), ioe); + _log.warn("Error decompressing: " + written + ", " + _in.getTotalRead() + "/" + _in.getTotalExpanded(), ioe); } catch (OutOfMemoryError oom) { _log.error("OOM in HTTP Decompressor", oom); } finally { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java index 1bf2ead5ff16334a22fa221f1ed7d4c75c8ed107..1cdf6f29e2a2a8db4f231692c25cd17adf4180f8 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnel.java @@ -51,6 +51,7 @@ import java.util.Properties; import java.util.Set; import java.util.StringTokenizer; import java.util.concurrent.CopyOnWriteArraySet; +import java.util.concurrent.atomic.AtomicLong; import net.i2p.I2PAppContext; import net.i2p.I2PException; @@ -78,7 +79,7 @@ import net.i2p.util.Log; public class I2PTunnel extends EventDispatcherImpl implements Logging { private final Log _log; private final I2PAppContext _context; - private static long __tunnelId = 0; + private static final AtomicLong __tunnelId = new AtomicLong(); private final long _tunnelId; private final Properties _clientOptions; private final Set<I2PSession> _sessions; @@ -118,7 +119,7 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging { public I2PTunnel(String[] args, ConnectionEventListener lsnr) { super(); _context = I2PAppContext.getGlobalContext(); // new I2PAppContext(); - _tunnelId = ++__tunnelId; + _tunnelId = __tunnelId.incrementAndGet(); _log = _context.logManager().getLog(I2PTunnel.class); // as of 0.8.4, include context properties Properties p = _context.getProperties(); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java index c6d5904943aaf721e7504f2d0f0c02101b5b1f48..381a113be72f4527f76f9b050c546b07e72a3579 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java @@ -22,6 +22,7 @@ import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.concurrent.ThreadFactory; +import java.util.concurrent.atomic.AtomicLong; import net.i2p.I2PAppContext; import net.i2p.I2PException; @@ -43,7 +44,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna static final long DEFAULT_CONNECT_TIMEOUT = 60 * 1000; - private static volatile long __clientId = 0; + private static final AtomicLong __clientId = new AtomicLong(); protected long _clientId; protected final Object sockLock = new Object(); // Guards sockMgr and mySockets protected I2PSocketManager sockMgr; // should be final and use a factory. LINT @@ -161,7 +162,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna EventDispatcher notifyThis, String handlerName, I2PTunnel tunnel, String pkf) throws IllegalArgumentException{ super(localPort + " (uninitialized)", notifyThis, tunnel); - _clientId = ++__clientId; + _clientId = __clientId.incrementAndGet(); this.localPort = localPort; this.l = l; _ownDest = ownDest; // == ! shared client diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java index 142aaf49bbd10f7e92235ac7a1244f86dd6e56f6..f05600a9e7cb8c7f4c98d9ae9ca0ac96003d0fac 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java @@ -104,7 +104,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R public I2PTunnelConnectClient(int localPort, Logging l, boolean ownDest, String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel) throws IllegalArgumentException { - super(localPort, ownDest, l, notifyThis, "HTTPS Proxy on " + tunnel.listenHost + ':' + localPort + " #" + (++__clientId), tunnel); + super(localPort, ownDest, l, notifyThis, "HTTPS Proxy on " + tunnel.listenHost + ':' + localPort, tunnel); if (waitEventValue("openBaseClientResult").equals("error")) { notifyEvent("openConnectClientResult", "error"); @@ -167,7 +167,7 @@ public class I2PTunnelConnectClient extends I2PTunnelHTTPClientBase implements R String targetRequest = null; boolean usingWWWProxy = false; String currentProxy = null; - long requestId = ++__requestId; + long requestId = __requestId.incrementAndGet(); try { out = s.getOutputStream(); in = s.getInputStream(); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java index f28df88277cc3fbc567e13e4355825823a2a8042..3ab3e6709e6706f1cf35563bb1fad7ad342073f7 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java @@ -202,7 +202,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn public I2PTunnelHTTPClient(int localPort, Logging l, boolean ownDest, String wwwProxy, EventDispatcher notifyThis, I2PTunnel tunnel) throws IllegalArgumentException { - super(localPort, ownDest, l, notifyThis, "HTTP Proxy on " + tunnel.listenHost + ':' + localPort + " #" + (++__clientId), tunnel); + super(localPort, ownDest, l, notifyThis, "HTTP Proxy on " + tunnel.listenHost + ':' + localPort, tunnel); _proxyNonce = Long.toString(_context.random().nextLong()); //proxyList = new ArrayList(); // We won't use outside of i2p @@ -335,7 +335,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn String internalPath = null; String internalRawQuery = null; String currentProxy = null; - long requestId = ++__requestId; + long requestId = __requestId.incrementAndGet(); boolean shout = false; try { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java index e9cfb12b50fe1f0d411d8715367a44c28b315684..3209b6ad2ce04a0c8ce6f357cd47191a7fad5d97 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClientBase.java @@ -18,6 +18,7 @@ import java.util.Locale; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import net.i2p.I2PAppContext; import net.i2p.client.streaming.I2PSocketManager; @@ -69,9 +70,6 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem "HTTP outproxy configured. Please configure an outproxy in I2PTunnel") .getBytes(); - /** used to assign unique IDs to the threads / clients. no logic or functionality */ - protected static volatile long __clientId = 0; - private final byte[] _proxyNonce; private final ConcurrentHashMap<String, NonceInfo> _nonces; private final AtomicInteger _nonceCleanCounter = new AtomicInteger(); @@ -90,7 +88,7 @@ public abstract class I2PTunnelHTTPClientBase extends I2PTunnelClientBase implem protected static final int DEFAULT_READ_TIMEOUT = 5*60*1000; - protected static long __requestId = 0; + protected static final AtomicLong __requestId = new AtomicLong(); public I2PTunnelHTTPClientBase(int localPort, boolean ownDest, Logging l, EventDispatcher notifyThis, String handlerName, diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java index 41e3069fd87d26449b9987aac15eabc8f3899d9f..5e1b76fc788c618eaff4758e445e84de28182bd5 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java @@ -29,9 +29,6 @@ import net.i2p.util.PortMapper; */ public class I2PTunnelIRCClient extends I2PTunnelClientBase { - /** used to assign unique IDs to the threads / clients. no logic or functionality */ - private static volatile long __clientId = 0; - /** list of Destination objects that we point at */ private final List<I2PSocketAddress> _addrs; private static final long DEFAULT_READ_TIMEOUT = 5*60*1000; // -1 @@ -61,7 +58,7 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase { ownDest, l, notifyThis, - "IRC Client on " + tunnel.listenHost + ':' + localPort + " #" + (++__clientId), tunnel, pkf); + "IRC Client on " + tunnel.listenHost + ':' + localPort, tunnel, pkf); _addrs = new ArrayList(4); buildAddresses(destinations); @@ -139,9 +136,9 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase { i2ps.setReadTimeout(readTimeout); StringBuffer expectedPong = new StringBuffer(); DCCHelper dcc = _dccEnabled ? new DCC(s.getLocalAddress().getAddress()) : null; - Thread in = new I2PAppThread(new IrcInboundFilter(s,i2ps, expectedPong, _log, dcc), "IRC Client " + __clientId + " in", true); + Thread in = new I2PAppThread(new IrcInboundFilter(s,i2ps, expectedPong, _log, dcc), "IRC Client " + _clientId + " in", true); in.start(); - Thread out = new I2PAppThread(new IrcOutboundFilter(s,i2ps, expectedPong, _log, dcc), "IRC Client " + __clientId + " out", true); + Thread out = new I2PAppThread(new IrcOutboundFilter(s,i2ps, expectedPong, _log, dcc), "IRC Client " + _clientId + " out", true); out.start(); } catch (Exception ex) { // generally NoRouteToHostException diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java index c3bfea5e7bf37b2548c4f3abba857d4b10e62655..fe512be23386544e96c67e8f6ab60d8b2d0385d4 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelRunner.java @@ -11,6 +11,7 @@ import java.io.OutputStream; import java.net.Socket; import java.net.SocketException; import java.util.List; +import java.util.concurrent.atomic.AtomicLong; import javax.net.ssl.SSLException; @@ -26,7 +27,7 @@ import net.i2p.util.Log; public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErrorListener { protected final Log _log; - private static volatile long __runnerId; + private static final AtomicLong __runnerId = new AtomicLong(); private final long _runnerId; /** * max bytes streamed in a packet - smaller ones might be filled @@ -96,7 +97,7 @@ public class I2PTunnelRunner extends I2PAppThread implements I2PSocket.SocketErr _log = I2PAppContext.getGlobalContext().logManager().getLog(getClass()); if (_log.shouldLog(Log.INFO)) _log.info("I2PTunnelRunner started"); - _runnerId = ++__runnerId; + _runnerId = __runnerId.incrementAndGet(); __forwarderId = i2ps.hashCode(); setName("I2PTunnelRunner " + _runnerId); start(); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java index 442c1533faaa1768b16ab6905bff6b0b6a955023..f439019484c21b3410ce8225bbbac19b289e4a2f 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java @@ -6,6 +6,7 @@ package net.i2p.i2ptunnel.udpTunnel; import java.io.ByteArrayOutputStream; import java.io.ByteArrayInputStream; import java.net.ServerSocket; +import java.util.concurrent.atomic.AtomicLong; import net.i2p.I2PAppContext; import net.i2p.client.I2PClient; @@ -48,13 +49,12 @@ import net.i2p.util.EventDispatcher; static final long DEFAULT_CONNECT_TIMEOUT = 60 * 1000; - private static volatile long __clientId = 0; + private static final AtomicLong __clientId = new AtomicLong(); protected long _clientId; protected Destination dest = null; private final Object startLock = new Object(); - private Object conLock = new Object(); private I2PSession _session; private Source _i2pSource; @@ -67,7 +67,7 @@ import net.i2p.util.EventDispatcher; public I2PTunnelUDPClientBase(String destination, Logging l, EventDispatcher notifyThis, I2PTunnel tunnel) throws IllegalArgumentException { super("UDPServer", notifyThis, tunnel); - _clientId = ++__clientId; + _clientId = __clientId.incrementAndGet();; this.l = l; _context = tunnel.getContext(); diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java index 039f1528334180a5d4e6225bd3e10ac0675402d3..b61bc40745bc290df1861e78554e33915ed08069 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java @@ -1104,7 +1104,6 @@ public class ConsoleUpdateManager implements UpdateManager { case PLUGIN: Properties props = PluginStarter.pluginProperties(_context, id); - String oldVersion = props.getProperty("version"); String xpi2pURL = props.getProperty("updateURL"); if (xpi2pURL != null) { try { @@ -1472,6 +1471,12 @@ public class ConsoleUpdateManager implements UpdateManager { return VersionComparator.comp(version, r.version); } + @Override + public int hashCode() { return version.hashCode(); } + + @Override + public boolean equals(Object o) { return (o instanceof Version) && version.equals(((Version)o).version); } + @Override public String toString() { return "Version " + version; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java index 31e8ff0bb5be079e2423b2cdbd5e01e6d882e987..2f8e441f4c16b9e1b9f59ebaa48b714316b21d80 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -632,7 +632,7 @@ public class PluginStarter implements Runnable { ClassLoader cl = null; if (app.classpath != null) { - String cp = new String(app.classpath); + String cp = app.classpath; if (cp.indexOf("$") >= 0) { cp = cp.replace("$I2P", ctx.getBaseDir().getAbsolutePath()); cp = cp.replace("$CONFIG", ctx.getConfigDir().getAbsolutePath()); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java index ac7dc477885203aa3b392af08f5880933cf604e9..e2b9e2e7fdb6eacc03337908823d8dc7b8a0333d 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java @@ -85,7 +85,7 @@ public class WebAppStarter { throw new IOException("Web app " + warPath + " does not exist"); Long oldmod = warModTimes.get(warPath); if (oldmod == null) { - warModTimes.put(warPath, new Long(newmod)); + warModTimes.put(warPath, Long.valueOf(newmod)); } else if (oldmod.longValue() < newmod) { // copy war to temporary directory File warTmpDir = new SecureDirectory(ctx.getTempDir(), "war-copy-" + appName + ctx.random().nextInt()); diff --git a/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java b/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java index 80ffce32c760adeba5676dbfd705e56f38060b5b..323673bae26bc2624b6955970fa9b90c4c4e6130 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/AddressbookBean.java @@ -354,11 +354,17 @@ public class AddressbookBean extends BaseBean { String filename = properties.getProperty( getBook() + "_addressbook" ); - FileOutputStream fos = new SecureFileOutputStream( ConfigBean.addressbookPrefix + filename ); - addressbook.store( fos, null ); + FileOutputStream fos = null; try { - fos.close(); - } catch (IOException ioe) {} + fos = new SecureFileOutputStream( ConfigBean.addressbookPrefix + filename ); + addressbook.store( fos, null ); + } finally { + if (fos != null) { + try { + fos.close(); + } catch (IOException ioe) {} + } + } } public String getFilter() { diff --git a/core/java/src/net/i2p/crypto/AESEngine.java b/core/java/src/net/i2p/crypto/AESEngine.java index 85b98d5f97556819f2c31bf7fb00af59c255f049..af0fb79f960b400c3504f4a61dc92aa0e00d8451 100644 --- a/core/java/src/net/i2p/crypto/AESEngine.java +++ b/core/java/src/net/i2p/crypto/AESEngine.java @@ -108,10 +108,6 @@ public class AESEngine { byte decr[] = new byte[payload.length]; decrypt(payload, 0, decr, 0, sessionKey, iv, payload.length); - if (decr == null) { - _log.error("Error decrypting the data - payload " + payload.length + " decrypted to null"); - return null; - } byte h[] = SimpleByteCache.acquire(Hash.HASH_LENGTH); _context.sha().calculateHash(iv, 0, 16, h, 0); diff --git a/core/java/src/net/i2p/crypto/CertUtil.java b/core/java/src/net/i2p/crypto/CertUtil.java index eef351c03409a9ee65b86a3663f78192dd24ba77..27ca116f58394de5d8476fac9114f0ed963ccd8d 100644 --- a/core/java/src/net/i2p/crypto/CertUtil.java +++ b/core/java/src/net/i2p/crypto/CertUtil.java @@ -89,9 +89,9 @@ public class CertUtil { log(I2PAppContext.getGlobalContext(), Log.ERROR, msg, t); } - private static void error(I2PAppContext ctx, String msg, Throwable t) { - log(ctx, Log.ERROR, msg, t); - } + //private static void error(I2PAppContext ctx, String msg, Throwable t) { + // log(ctx, Log.ERROR, msg, t); + //} private static void log(I2PAppContext ctx, int level, String msg, Throwable t) { Log l = ctx.logManager().getLog(CertUtil.class); diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java index a367534912a7b9528e9b2146e95dd5acc3d440bb..665f9c907c5ccd31aab03dea2bd1e4cd9bad3b06 100644 --- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java +++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.IOException; +import java.io.OutputStream; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.PrivateKey; @@ -54,11 +55,23 @@ public class KeyStoreUtil { char[] pwchars = password != null ? password.toCharArray() : null; KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); if (exists) { - InputStream fis = new FileInputStream(ksFile); - ks.load(fis, pwchars); + InputStream fis = null; + try { + fis = new FileInputStream(ksFile); + ks.load(fis, pwchars); + } finally { + if (fis != null) try { fis.close(); } catch (IOException ioe) {} + } + } + if (ksFile != null && !exists) { + OutputStream fos = null; + try { + fos = new SecureFileOutputStream(ksFile); + ks.store(fos, pwchars); + } finally { + if (fos != null) try { fos.close(); } catch (IOException ioe) {} + } } - if (ksFile != null && !exists) - ks.store(new SecureFileOutputStream(ksFile), pwchars); return ks; } @@ -452,13 +465,13 @@ public class KeyStoreUtil { log(I2PAppContext.getGlobalContext(), Log.ERROR, msg, t); } - private static void info(I2PAppContext ctx, String msg) { - log(ctx, Log.INFO, msg, null); - } + //private static void info(I2PAppContext ctx, String msg) { + // log(ctx, Log.INFO, msg, null); + //} - private static void error(I2PAppContext ctx, String msg, Throwable t) { - log(ctx, Log.ERROR, msg, t); - } + //private static void error(I2PAppContext ctx, String msg, Throwable t) { + // log(ctx, Log.ERROR, msg, t); + //} private static void log(I2PAppContext ctx, int level, String msg, Throwable t) { if (level >= Log.WARN && !ctx.isRouterContext()) { diff --git a/core/java/src/net/i2p/crypto/SigUtil.java b/core/java/src/net/i2p/crypto/SigUtil.java index 1d9fe7c17d0b39268a75bdf9c656434177fe079f..da2fa363e521892ac46f215f894b1d2e3bfaeff0 100644 --- a/core/java/src/net/i2p/crypto/SigUtil.java +++ b/core/java/src/net/i2p/crypto/SigUtil.java @@ -174,7 +174,6 @@ class SigUtil { private static ECPrivateKey cvtToJavaECKey(SigningPrivateKey pk) throws GeneralSecurityException { SigType type = pk.getType(); - int len = type.getPubkeyLen(); byte[] b = pk.getData(); BigInteger s = new NativeBigInteger(1, b); // see ECConstants re: casting diff --git a/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java b/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java index 0d2d024360c7d08a13f0460b85d69c3fec3fe4b0..dbe17366a473005c790b7cfdc01eec29b1812cb9 100644 --- a/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java +++ b/core/java/src/net/i2p/crypto/TransientSessionKeyManager.java @@ -293,7 +293,7 @@ public class TransientSessionKeyManager extends SessionKeyManager { } if (sess == null) { SessionKey key = _context.keyGenerator().generateSessionKey(); - sess = createAndReturnSession(target, key); + createAndReturnSession(target, key); return key; } return sess.getCurrentKey(); diff --git a/core/java/src/net/i2p/data/Base64.java b/core/java/src/net/i2p/data/Base64.java index 2731b6ce9dfbefb13ec9c78351ee018ed003d44b..8fb72e1c0af567e3ab1ca267fcdd3b500888f8fb 100644 --- a/core/java/src/net/i2p/data/Base64.java +++ b/core/java/src/net/i2p/data/Base64.java @@ -477,9 +477,11 @@ public class Base64 { * @param breakLines Break lines at 80 characters or less. * @since 1.4 */ +/***** unused private static String encodeBytes(byte[] source, boolean breakLines) { return encodeBytes(source, 0, source.length, breakLines); } // end encodeBytes +******/ /** * Encodes a byte array into Base64 notation. @@ -493,13 +495,13 @@ public class Base64 { private static String encodeBytes(byte[] source, int off, int len) { return encodeBytes(source, off, len, true); } // end encodeBytes -******/ private static String encodeBytes(byte[] source, int off, int len, boolean breakLines) { StringBuilder buf = new StringBuilder( (len*4)/3 ); encodeBytes(source, off, len, breakLines, buf, ALPHABET); return buf.toString(); } +******/ /** * Encodes a byte array into Base64 notation. diff --git a/core/java/src/net/i2p/util/EepGet.java b/core/java/src/net/i2p/util/EepGet.java index 93606b2478f36dbbdac9f25dcf9d77f4f3239df3..2fadef1db753af9006b38ff1999a93205e3db72b 100644 --- a/core/java/src/net/i2p/util/EepGet.java +++ b/core/java/src/net/i2p/util/EepGet.java @@ -1291,7 +1291,7 @@ public class EepGet { } catch (IOException ioe) { _decompressException = ioe; if (_log.shouldLog(Log.WARN)) - _log.warn("Error decompressing: " + written + ", " + (in != null ? in.getTotalRead() + "/" + in.getTotalExpanded() : ""), ioe); + _log.warn("Error decompressing: " + written + ", " + in.getTotalRead() + "/" + in.getTotalExpanded(), ioe); } catch (OutOfMemoryError oom) { _decompressException = new IOException("OOM in HTTP Decompressor"); _log.error("OOM in HTTP Decompressor", oom); diff --git a/core/java/src/net/i2p/util/NativeBigInteger.java b/core/java/src/net/i2p/util/NativeBigInteger.java index 48762653d5eef6da92f34a2a29875c2f456ad3c6..99850c066804cdc774129377a7ee32b78ca0ab04 100644 --- a/core/java/src/net/i2p/util/NativeBigInteger.java +++ b/core/java/src/net/i2p/util/NativeBigInteger.java @@ -522,9 +522,11 @@ public class NativeBigInteger extends BigInteger { * @return true if it was loaded successfully, else false * */ +/**** private static final boolean loadGeneric(boolean optimized) { return loadGeneric(getMiddleName(optimized)); } +****/ private static final boolean loadGeneric(String name) { try { @@ -563,10 +565,12 @@ public class NativeBigInteger extends BigInteger { * @return true if it was loaded successfully, else false * */ +/**** private static final boolean loadFromResource(boolean optimized) { String resourceName = getResourceName(optimized); return loadFromResource(resourceName); } +****/ private static final boolean loadFromResource(String resourceName) { if (resourceName == null) return false; diff --git a/core/java/src/net/metanotion/io/data/IntBytes.java b/core/java/src/net/metanotion/io/data/IntBytes.java index 251cea6542ac1e28bc98638f1b4fa4d0cb2d4f00..89845040c2a20c17d6f486cd52fe6c673a79b0ff 100644 --- a/core/java/src/net/metanotion/io/data/IntBytes.java +++ b/core/java/src/net/metanotion/io/data/IntBytes.java @@ -46,6 +46,6 @@ public class IntBytes implements Serializer { ((b[1] & 0xff) << 16) | ((b[2] & 0xff) << 8) | (b[3] & 0xff)); - return new Integer(v); + return Integer.valueOf(v); } } diff --git a/core/java/src/net/metanotion/io/data/LongBytes.java b/core/java/src/net/metanotion/io/data/LongBytes.java index 796b6493d6f7e7534f3dcb207ab8ef81b101f5b8..fe06e5120450ac8abb34ca7f379ea13437482cd6 100644 --- a/core/java/src/net/metanotion/io/data/LongBytes.java +++ b/core/java/src/net/metanotion/io/data/LongBytes.java @@ -54,6 +54,6 @@ public class LongBytes implements Serializer { ((long)(b[5] & 0xff) << 16) | ((long)(b[6] & 0xff) << 8) | (b[7] & 0xff)); - return new Long(v); + return Long.valueOf(v); } } diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 5f540c84e1b8c20f89db0273a51fda61c0ba020f..3388ca81934d3b99c7e7998638df04b7959f6869 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 26; + public final static long BUILD = 27; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/TunnelPoolSettings.java b/router/java/src/net/i2p/router/TunnelPoolSettings.java index 3016dadd6ee82856c5b53b6cb9e6c45cb62237f4..1c52e3f7086cd45c0d4cb32451b9e2d0c83a00d6 100644 --- a/router/java/src/net/i2p/router/TunnelPoolSettings.java +++ b/router/java/src/net/i2p/router/TunnelPoolSettings.java @@ -285,7 +285,7 @@ public class TunnelPoolSettings { private static final boolean getBoolean(String str, boolean defaultValue) { if (str == null) return defaultValue; boolean v = Boolean.parseBoolean(str) || - (str != null && "YES".equals(str.toUpperCase(Locale.US))); + "YES".equals(str.toUpperCase(Locale.US)); return v; } diff --git a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java index 8c20f72d46ecfd5fa7873ef1361ad0b5951b3879..072bfde8304f8a792560272899353ce9eb94016c 100644 --- a/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java +++ b/router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java @@ -681,10 +681,17 @@ public class OutboundClientMessageOneShotJob extends JobImpl { * * this is safe to call multiple times (only tells the client once) */ +/**** private void dieFatal() { dieFatal(MessageStatusMessage.STATUS_SEND_GUARANTEED_FAILURE); } +****/ + /** + * give up the ghost, this message just aint going through. tell the client. + * + * this is safe to call multiple times (only tells the client once) + */ private void dieFatal(int status) { if (_finished.getAndSet(true)) return; diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java index d09b11f04b42fd8f4505893812f61c5fa41eb1a8..eb6d3ee9d05eebb286ef4a8abad5ed0100eb8151 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java @@ -97,10 +97,6 @@ class FloodfillVerifyStoreJob extends JobImpl { return; } DatabaseLookupMessage lookup = buildLookup(replyTunnelInfo); - if (lookup == null) { - _facade.verifyFinished(_key); - return; - } // If we are verifying a leaseset, use the destination's own tunnels, // to avoid association by the exploratory tunnel OBEP. @@ -180,6 +176,7 @@ class FloodfillVerifyStoreJob extends JobImpl { return _sentTo; } + /** @return non-null */ private DatabaseLookupMessage buildLookup(TunnelInfo replyTunnelInfo) { // If we are verifying a leaseset, use the destination's own tunnels, // to avoid association by the exploratory tunnel OBEP. diff --git a/router/java/src/net/i2p/router/tasks/ShutdownHook.java b/router/java/src/net/i2p/router/tasks/ShutdownHook.java index d3db8f876569b34f2373539549a0c2acc453c27a..135494417cc9639bc37b3fb016a7855274e5d09c 100644 --- a/router/java/src/net/i2p/router/tasks/ShutdownHook.java +++ b/router/java/src/net/i2p/router/tasks/ShutdownHook.java @@ -8,6 +8,8 @@ package net.i2p.router.tasks; * */ +import java.util.concurrent.atomic.AtomicInteger; + import net.i2p.router.Router; import net.i2p.router.RouterContext; import net.i2p.router.RouterVersion; @@ -21,12 +23,12 @@ import net.i2p.util.Log; */ public class ShutdownHook extends Thread { private final RouterContext _context; - private static int __id = 0; + private static final AtomicInteger __id = new AtomicInteger(); private final int _id; public ShutdownHook(RouterContext ctx) { _context = ctx; - _id = ++__id; + _id = __id.incrementAndGet(); } @Override diff --git a/router/java/src/net/i2p/router/transport/GeoIPv6.java b/router/java/src/net/i2p/router/transport/GeoIPv6.java index 0fdf7831070f6ab727f3ec74b6667aeda3897446..ebf79e5d14018c22c43ff2767525850ff5ec0158 100644 --- a/router/java/src/net/i2p/router/transport/GeoIPv6.java +++ b/router/java/src/net/i2p/router/transport/GeoIPv6.java @@ -292,6 +292,12 @@ class GeoIPv6 { return 0; } + @Override + public int hashCode() { return (((int) from) ^ ((int) to)); } + + @Override + public boolean equals(Object o) { return (o instanceof V6Entry) && compareTo((V6Entry)o) == 0; } + @Override public String toString() { return "0x" + Long.toHexString(from) + " -> 0x" + Long.toHexString(to) + " : " + cc;