diff --git a/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java b/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java index 2534c35352..64369a1007 100644 --- a/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java +++ b/apps/addressbook/java/src/net/i2p/addressbook/Daemon.java @@ -189,7 +189,7 @@ class Daemon { Destination oldDest; if (knownNames != null) { oldDest = null; - isKnown = key != null ? knownNames.contains(key) : null; + isKnown = key != null ? knownNames.contains(key) : false; } else { oldDest = key != null ? router.lookup(key) : null; isKnown = oldDest != null; @@ -803,7 +803,7 @@ class Daemon { */ public static void main(String[] args) { Daemon daemon = new Daemon(); - if (args != null && args.length > 0 && args[0].equals("test")) + if (args.length > 0 && args[0].equals("test")) daemon.test(args); else daemon.run(args); @@ -823,11 +823,14 @@ class Daemon { ctx.logManager().flush(); } + /** + * @param args may be null + */ public void run(String[] args) { _running = true; String settingsLocation = "config.txt"; File homeFile; - if (args.length > 0) { + if (args != null && args.length > 0) { homeFile = new SecureDirectory(args[0]); if (!homeFile.isAbsolute()) homeFile = new SecureDirectory(I2PAppContext.getGlobalContext().getRouterDir(), args[0]); diff --git a/apps/addressbook/java/src/net/metanotion/io/block/BlockFile.java b/apps/addressbook/java/src/net/metanotion/io/block/BlockFile.java index 2cfec6f62b..740374ec6e 100644 --- a/apps/addressbook/java/src/net/metanotion/io/block/BlockFile.java +++ b/apps/addressbook/java/src/net/metanotion/io/block/BlockFile.java @@ -590,12 +590,7 @@ public class BlockFile implements Closeable { _isClosed = true; metaIndex.close(); - Set oi = openIndices.keySet(); - Iterator i = oi.iterator(); - Object k; - while(i.hasNext()) { - k = i.next(); - BSkipList bsl = openIndices.get(k); + for (BSkipList bsl : openIndices.values()) { bsl.close(); } diff --git a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java index f6e65dc10e..0817db4320 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java +++ b/apps/i2psnark/java/src/org/klomp/snark/SnarkManager.java @@ -201,7 +201,7 @@ public class SnarkManager implements CompleteListener, ClientApp { public static final Set DEFAULT_TRACKER_ANNOUNCES; /** host names for config form */ - public static final Set KNOWN_OPENTRACKERS = new HashSet(Arrays.asList(new String[] { + static final Set KNOWN_OPENTRACKERS = new HashSet(Arrays.asList(new String[] { "tracker.welterde.i2p", "cfmqlafjfmgkzbt4r3jsfyhgsr5abgxryl6fnz3d3y5a365di5aa.b32.i2p", "opentracker.dg2.i2p", "w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p", "tracker.thebland.i2p", "s5ikrdyjwbcgxmqetxb3nyheizftms7euacuub2hic7defkh3xhq.b32.i2p", diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java index bfeccaba14..13062b2b33 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/ui/TunnelConfig.java @@ -811,8 +811,8 @@ public class TunnelConfig { "proxyUsername", "proxyPassword" }; - public static final Set _noShowSet = new HashSet(128); - public static final Set _nonProxyNoShowSet = new HashSet(4); + static final Set _noShowSet = new HashSet(128); + static final Set _nonProxyNoShowSet = new HashSet(4); static { _noShowSet.addAll(Arrays.asList(_noShowOpts)); _noShowSet.addAll(Arrays.asList(_booleanClientOpts)); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigSummaryHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigSummaryHandler.java index 49eb9f1574..bfe2fb87a9 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigSummaryHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/ConfigSummaryHandler.java @@ -102,10 +102,11 @@ public class ConfigSummaryHandler extends FormHandler { continue; } } - for (Iterator iter = sections.keySet().iterator(); iter.hasNext(); ) { - int i = iter.next(); + for (Iterator> iter = sections.entrySet().iterator(); iter.hasNext(); ) { + Map.Entry e = iter.next(); + Integer i = e.getKey(); if (toDelete.contains(i)) { - String removedName = sections.get(i); + String removedName = e.getValue(); iter.remove(); addFormNotice(_t("Removed") + ": " + removedName); } diff --git a/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java b/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java index 3d6708e053..60dd09e7f5 100644 --- a/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java +++ b/apps/sam/java/src/net/i2p/sam/SAMStreamSession.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; @@ -396,8 +397,8 @@ class SAMStreamSession implements SAMMessageSess { * @return An id associated to the socket handler */ protected int createSocketHandler ( I2PSocket s, int id ) { - SAMStreamSessionSocketReader reader = null; - StreamSender sender = null; + SAMStreamSessionSocketReader reader; + StreamSender sender; if (id == 0) { id = createUniqueId(); } @@ -468,8 +469,9 @@ class SAMStreamSession implements SAMMessageSess { StreamSender sender; synchronized (handlersMap) { - reader = handlersMap.remove(Integer.valueOf(id)); - sender = sendersMap.remove(Integer.valueOf(id)); + Integer iid = Integer.valueOf(id); + reader = handlersMap.remove(iid); + sender = sendersMap.remove(iid); } if (reader != null) @@ -486,17 +488,10 @@ class SAMStreamSession implements SAMMessageSess { * */ private void removeAllSocketHandlers() { - Integer id; - Set keySet; - Iterator iter; - synchronized (handlersMap) { - keySet = handlersMap.keySet(); - iter = keySet.iterator(); - - while (iter.hasNext()) { - id = iter.next(); - handlersMap.get(id).stopRunning(); + for (Map.Entry e : handlersMap.entrySet()) { + Integer id = e.getKey(); + e.getValue().stopRunning(); sendersMap.get(id).shutDownGracefully(); } handlersMap.clear(); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java index ba73aa5511..2ff924081e 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/MessageInputStream.java @@ -288,12 +288,11 @@ class MessageInputStream extends InputStream { buf.append(" not ready blocks: ["); long notAvailable = 0; - for (Long id : _notYetReadyBlocks.keySet()) { - ByteArray ba = _notYetReadyBlocks.get(id); + for (Map.Entry e : _notYetReadyBlocks.entrySet()) { + Long id = e.getKey(); + ByteArray ba = e.getValue(); buf.append(id).append(" "); - - if (ba != null) - notAvailable += ba.getValid(); + notAvailable += ba.getValid(); } buf.append("] not ready bytes: ").append(notAvailable); @@ -589,11 +588,11 @@ class MessageInputStream extends InputStream { buf.append(" blocks: ").append(_readyDataBlocks.size()); buf.append(" not ready blocks: ["); long notAvailable = 0; - for (Long id : _notYetReadyBlocks.keySet()) { - ByteArray ba = _notYetReadyBlocks.get(id); + for (Map.Entry e : _notYetReadyBlocks.entrySet()) { + Long id = e.getKey(); + ByteArray ba = e.getValue(); buf.append(id).append(" "); - if (ba != null) - notAvailable += ba.getValid(); + notAvailable += ba.getValid(); } buf.append("] not ready bytes: ").append(notAvailable); buf.append(" highest ready block: ").append(_highestReadyBlockId); diff --git a/apps/susidns/src/java/src/i2p/susi/dns/TranslateSVGServlet.java b/apps/susidns/src/java/src/i2p/susi/dns/TranslateSVGServlet.java index 40745d3a03..02ba39e090 100644 --- a/apps/susidns/src/java/src/i2p/susi/dns/TranslateSVGServlet.java +++ b/apps/susidns/src/java/src/i2p/susi/dns/TranslateSVGServlet.java @@ -31,7 +31,7 @@ public class TranslateSVGServlet extends HttpServlet { private static final long serialVersionUID = 18638760L; private final I2PAppContext _context; - private final String DIR = "/svg"; + private static final String DIR = "/svg"; public TranslateSVGServlet() { super(); diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index 6eb509bf2a..18d32e4427 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -898,6 +898,10 @@ public class WebMail extends HttpServlet // because we may already have UIDLs in the MailCache to fetch synchronized(_so) { mc = _so.caches.get(DIR_FOLDER); + if (mc == null) { + _so.error += "Internal error, no folder\n"; + return; + } while (mc.isLoading()) { try { _so.wait(5000); @@ -910,9 +914,7 @@ public class WebMail extends HttpServlet if (log.shouldDebug()) log.debug("Done waiting for folder load"); // fetch the mail outside the lock // TODO, would be better to add each email as we get it - if (mc != null) { - found = mc.getMail(MailCache.FetchMode.HEADER); - } + found = mc.getMail(MailCache.FetchMode.HEADER); } if (log.shouldDebug()) log.debug("CW.FNM connected? " + connected + " found? " + found); synchronized(_so) { @@ -2898,7 +2900,7 @@ public class WebMail extends HttpServlet } else { sessionObject.error += relay.error; } - sessionObject.info.replace(_t("Sending mail.") + '\n', ""); + sessionObject.info = sessionObject.info.replace(_t("Sending mail.") + '\n', ""); } } } @@ -3377,7 +3379,7 @@ public class WebMail extends HttpServlet out.println(button(DELETE, _t("Delete"))); } out.println(button(LOGOUT, _t("Logout") )); - if (mail.hasBody() && !mc.getFolderName().equals(DIR_DRAFTS)) { + if (hasHeader && mail.hasBody() && !mc.getFolderName().equals(DIR_DRAFTS)) { // can't move unless has body // can't move from drafts out.println(button(MOVE_TO, _t("Move to Folder") + ':')); diff --git a/build.xml b/build.xml index 9df87246b9..d2a0689cb8 100644 --- a/build.xml +++ b/build.xml @@ -877,7 +877,6 @@ - @@ -2060,6 +2059,8 @@ + + @@ -2070,7 +2071,7 @@ - + diff --git a/core/java/src/net/i2p/crypto/KeyStoreUtil.java b/core/java/src/net/i2p/crypto/KeyStoreUtil.java index 543debb7f1..d3b95c9ffe 100644 --- a/core/java/src/net/i2p/crypto/KeyStoreUtil.java +++ b/core/java/src/net/i2p/crypto/KeyStoreUtil.java @@ -44,7 +44,7 @@ import net.i2p.util.SystemVersion; */ public final class KeyStoreUtil { - public static boolean _blacklistLogged; + private static boolean _blacklistLogged; public static final String DEFAULT_KEYSTORE_PASSWORD = "changeit"; private static final String DEFAULT_KEY_ALGORITHM = "RSA"; @@ -1331,8 +1331,8 @@ public final class KeyStoreUtil { String alias = args[2]; String pw = args[3]; boolean ok = createKeys(ksf, DEFAULT_KEYSTORE_PASSWORD, alias, "test cname", "test ou", - //DEFAULT_KEY_VALID_DAYS, "EdDSA", 256, pw); - DEFAULT_KEY_VALID_DAYS, "ElGamal", 2048, pw); + DEFAULT_KEY_VALID_DAYS, "EdDSA", 256, pw); + //DEFAULT_KEY_VALID_DAYS, "ElGamal", 2048, pw); System.out.println("genkey ok? " + ok); } diff --git a/core/java/src/net/i2p/crypto/TrustedUpdate.java b/core/java/src/net/i2p/crypto/TrustedUpdate.java index 653d427e84..1b262b7285 100644 --- a/core/java/src/net/i2p/crypto/TrustedUpdate.java +++ b/core/java/src/net/i2p/crypto/TrustedUpdate.java @@ -829,10 +829,11 @@ riCe6OlAEiNpcc6mMyIYYWFICbrDFTrDR3wXqwc/Jkcx6L5VVWoagpSzbo3yGhc= * @since 0.7.12 */ public String verifyAndGetSigner(File signedFile) { - for (SigningPublicKey signingPublicKey : _trustedKeys.keySet()) { + for (Map.Entry e : _trustedKeys.entrySet()) { + SigningPublicKey signingPublicKey = e.getKey(); boolean isValidSignature = verify(signedFile, signingPublicKey); if (isValidSignature) - return _trustedKeys.get(signingPublicKey); + return e.getValue(); } return null; } diff --git a/router/java/src/com/southernstorm/noise/protocol/HandshakeState.java b/router/java/src/com/southernstorm/noise/protocol/HandshakeState.java index ae38a9b14e..ea2416ecff 100644 --- a/router/java/src/com/southernstorm/noise/protocol/HandshakeState.java +++ b/router/java/src/com/southernstorm/noise/protocol/HandshakeState.java @@ -41,7 +41,6 @@ public class HandshakeState implements Destroyable { private DHState localEphemeral; private DHState remotePublicKey; private DHState remoteEphemeral; - private DHState fixedEphemeral; private int action; private final int requirements; private int patternIndex; @@ -486,10 +485,7 @@ public class HandshakeState implements Destroyable { // then the ephemeral key may have already been provided. if (localEphemeral == null) throw new IllegalStateException("Pattern definition error"); - if (fixedEphemeral == null) - localEphemeral.generateKeyPair(); - else - localEphemeral.copyFrom(fixedEphemeral); + localEphemeral.generateKeyPair(); len = localEphemeral.getPublicKeyLength(); if (space < len) throw new ShortBufferException(); @@ -802,8 +798,6 @@ public class HandshakeState implements Destroyable { remotePublicKey.destroy(); if (remoteEphemeral != null) remoteEphemeral.destroy(); - if (fixedEphemeral != null) - fixedEphemeral.destroy(); if (prologue != null) Noise.destroy(prologue); } diff --git a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java index c9daaac713..1b7df28c2e 100644 --- a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java +++ b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java @@ -312,6 +312,7 @@ public class DeliveryInstructions extends DataStructureImpl { return additionalSize; } +/**** private byte[] getAdditionalInfo() { int additionalSize = getAdditionalInfoSize(); byte rv[] = new byte[additionalSize]; @@ -322,7 +323,9 @@ public class DeliveryInstructions extends DataStructureImpl { throw new IllegalStateException("size mismatch, additionalSize = " + additionalSize + ", offset = " + offset); return rv; } +****/ + /** */ private int getAdditionalInfo(byte rv[], int offset) { int origOffset = offset; diff --git a/router/java/src/net/i2p/router/PersistentKeyRing.java b/router/java/src/net/i2p/router/PersistentKeyRing.java index 1eeebb4ea7..5ad911618e 100644 --- a/router/java/src/net/i2p/router/PersistentKeyRing.java +++ b/router/java/src/net/i2p/router/PersistentKeyRing.java @@ -39,7 +39,7 @@ public class PersistentKeyRing extends KeyRing { @Override public SessionKey remove(Object o) { SessionKey rv = super.remove(o); - if (rv != null && o != null && o instanceof Hash) { + if (rv != null && o instanceof Hash) { Hash h = (Hash) o; _ctx.router().saveConfig(PROP_PFX + h.toBase64().replace("=", "$"), null); } 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 55c97a2695..29523181dd 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPTransport.java @@ -612,10 +612,6 @@ public class NTCPTransport extends TransportImpl { /** queue up afterSend call, which can take some time w/ jobs, etc */ void sendComplete(OutNetMessage msg) { _finisher.add(msg); } - private boolean isEstablished(RouterIdentity peer) { - return isEstablished(peer.calculateHash()); - } - @Override public boolean isEstablished(Hash dest) { NTCPConnection con = _conByIdent.get(dest); diff --git a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java index ca73805327..1eeb4e0916 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPPacket.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPPacket.java @@ -407,14 +407,14 @@ class UDPPacket implements CDQEntry { * @param inbound unused */ public static UDPPacket acquire(RouterContext ctx, boolean inbound) { - UDPPacket rv = null; + UDPPacket rv; if (CACHE) { PacketFactory.context = ctx; rv = _packetCache.acquire(); rv.init(ctx); - } - if (rv == null) + } else { rv = new UDPPacket(ctx); + } return rv; }