diff --git a/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java index 223c33d20..986fdaf74 100644 --- a/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java +++ b/router/java/src/net/i2p/data/i2np/DatabaseStoreMessage.java @@ -88,7 +88,8 @@ public class DatabaseStoreMessage extends I2NPMessageImpl { try { _key = new Hash(); _key.readBytes(in); - _log.debug("Hash read: " + _key.toBase64()); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Hash read: " + _key.toBase64()); _type = (int)DataHelper.readLong(in, 1); if (_type == KEY_TYPE_LEASESET) { _leaseSet = new LeaseSet(); diff --git a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java index 233d894bd..eefbb0263 100644 --- a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java +++ b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java @@ -1,9 +1,9 @@ package net.i2p.data.i2np; /* * free (adj.): unencumbered; not under the control of others - * Written by jrandom in 2003 and released into the public domain - * with no warranty of any kind, either expressed or implied. - * It probably won't make your computer catch on fire, or eat + * Written by jrandom in 2003 and released into the public domain + * with no warranty of any kind, either expressed or implied. + * It probably won't make your computer catch on fire, or eat * your children, but it might. Use at your own risk. * */ @@ -23,7 +23,7 @@ import net.i2p.util.Log; /** - * Contains the delivery instructions + * Contains the delivery instructions * * @author jrandom */ @@ -51,15 +51,15 @@ public class DeliveryInstructions extends DataStructureImpl { private final static long FLAG_MODE = 96; private final static long FLAG_DELAY = 16; - public DeliveryInstructions() { - setEncrypted(false); - setEncryptionKey(null); - setDeliveryMode(-1); - setDestination(null); - setRouter(null); - setTunnelId(null); - setDelayRequested(false); - setDelaySeconds(0); + public DeliveryInstructions() { + setEncrypted(false); + setEncryptionKey(null); + setDeliveryMode(-1); + setDestination(null); + setRouter(null); + setTunnelId(null); + setDelayRequested(false); + setDelaySeconds(0); } public boolean getEncrypted() { return _encrypted; } @@ -80,186 +80,198 @@ public class DeliveryInstructions extends DataStructureImpl { public void setDelaySeconds(long seconds) { _delaySeconds = seconds; } public void readBytes(InputStream in) throws DataFormatException, IOException { - long flags = DataHelper.readLong(in, 1); - _log.debug("Read flags: " + flags + " mode: " + flagMode(flags)); - - if (flagEncrypted(flags)) { - SessionKey k = new SessionKey(); - k.readBytes(in); - setEncryptionKey(k); - setEncrypted(true); - } else { - setEncrypted(false); - } - - setDeliveryMode(flagMode(flags)); - switch (flagMode(flags)) { - case FLAG_MODE_LOCAL: - break; - case FLAG_MODE_DESTINATION: - Hash destHash = new Hash(); - destHash.readBytes(in); - setDestination(destHash); - break; - case FLAG_MODE_ROUTER: - Hash routerHash = new Hash(); - routerHash.readBytes(in); - setRouter(routerHash); - break; - case FLAG_MODE_TUNNEL: - Hash tunnelRouterHash = new Hash(); - tunnelRouterHash.readBytes(in); - setRouter(tunnelRouterHash); - TunnelId id = new TunnelId(); - id.readBytes(in); - setTunnelId(id); - break; - } - - if (flagDelay(flags)) { - long delay = DataHelper.readLong(in, 4); - setDelayRequested(true); - setDelaySeconds(delay); - } else { - setDelayRequested(false); - } + long flags = DataHelper.readLong(in, 1); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Read flags: " + flags + " mode: " + flagMode(flags)); + + if (flagEncrypted(flags)) { + SessionKey k = new SessionKey(); + k.readBytes(in); + setEncryptionKey(k); + setEncrypted(true); + } else { + setEncrypted(false); + } + + setDeliveryMode(flagMode(flags)); + switch (flagMode(flags)) { + case FLAG_MODE_LOCAL: + break; + case FLAG_MODE_DESTINATION: + Hash destHash = new Hash(); + destHash.readBytes(in); + setDestination(destHash); + break; + case FLAG_MODE_ROUTER: + Hash routerHash = new Hash(); + routerHash.readBytes(in); + setRouter(routerHash); + break; + case FLAG_MODE_TUNNEL: + Hash tunnelRouterHash = new Hash(); + tunnelRouterHash.readBytes(in); + setRouter(tunnelRouterHash); + TunnelId id = new TunnelId(); + id.readBytes(in); + setTunnelId(id); + break; + } + + if (flagDelay(flags)) { + long delay = DataHelper.readLong(in, 4); + setDelayRequested(true); + setDelaySeconds(delay); + } else { + setDelayRequested(false); + } } - + private boolean flagEncrypted(long flags) { - return (0 != (flags & FLAG_ENCRYPTED)); + return (0 != (flags & FLAG_ENCRYPTED)); } private int flagMode(long flags) { - long v = flags & FLAG_MODE; - v >>>= 5; - return (int)v; + long v = flags & FLAG_MODE; + v >>>= 5; + return (int)v; } private boolean flagDelay(long flags) { - return (0 != (flags & FLAG_DELAY)); + return (0 != (flags & FLAG_DELAY)); } private long getFlags() { - long val = 0L; - if (getEncrypted()) - val = val | FLAG_ENCRYPTED; - long fmode = 0; - switch (getDeliveryMode()) { - case FLAG_MODE_LOCAL: - break; - case FLAG_MODE_DESTINATION: - fmode = FLAG_MODE_DESTINATION << 5; - break; - case FLAG_MODE_ROUTER: - fmode = FLAG_MODE_ROUTER << 5; - break; - case FLAG_MODE_TUNNEL: - fmode = FLAG_MODE_TUNNEL << 5; - break; - } - val = val | fmode; - if (getDelayRequested()) - val = val | FLAG_DELAY; - _log.debug("getFlags() = " + val); - return val; + long val = 0L; + if (getEncrypted()) + val = val | FLAG_ENCRYPTED; + long fmode = 0; + switch (getDeliveryMode()) { + case FLAG_MODE_LOCAL: + break; + case FLAG_MODE_DESTINATION: + fmode = FLAG_MODE_DESTINATION << 5; + break; + case FLAG_MODE_ROUTER: + fmode = FLAG_MODE_ROUTER << 5; + break; + case FLAG_MODE_TUNNEL: + fmode = FLAG_MODE_TUNNEL << 5; + break; + } + val = val | fmode; + if (getDelayRequested()) + val = val | FLAG_DELAY; + _log.debug("getFlags() = " + val); + return val; } private byte[] getAdditionalInfo() throws DataFormatException { - ByteArrayOutputStream baos = new ByteArrayOutputStream(64); - try { - if (getEncrypted()) { - if (_encryptionKey == null) throw new DataFormatException("Encryption key is not set"); - _encryptionKey.writeBytes(baos); - _log.debug("IsEncrypted"); - } else { - _log.debug("Is NOT Encrypted"); - } - switch (getDeliveryMode()) { - case FLAG_MODE_LOCAL: - _log.debug("mode = local"); - break; - case FLAG_MODE_DESTINATION: - if (_destinationHash == null) throw new DataFormatException("Destination hash is not set"); - _destinationHash.writeBytes(baos); - _log.debug("mode = destination, hash = " + _destinationHash); - break; - case FLAG_MODE_ROUTER: - if (_routerHash == null) throw new DataFormatException("Router hash is not set"); - _routerHash.writeBytes(baos); - _log.debug("mode = router, routerHash = " + _routerHash); - break; - case FLAG_MODE_TUNNEL: - if ( (_routerHash == null) || (_tunnelId == null) ) throw new DataFormatException("Router hash or tunnel ID is not set"); - _routerHash.writeBytes(baos); - _tunnelId.writeBytes(baos); - _log.debug("mode = tunnel, tunnelId = " + _tunnelId.getTunnelId() + ", routerHash = " + _routerHash); - break; - } - if (getDelayRequested()) { - _log.debug("delay requested: " + getDelaySeconds()); - DataHelper.writeLong(baos, 4, getDelaySeconds()); - } else { - _log.debug("delay NOT requested"); - } - } catch (IOException ioe) { - throw new DataFormatException("Unable to write out additional info", ioe); - } - return baos.toByteArray(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(64); + try { + if (getEncrypted()) { + if (_encryptionKey == null) throw new DataFormatException("Encryption key is not set"); + _encryptionKey.writeBytes(baos); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("IsEncrypted"); + } else { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Is NOT Encrypted"); + } + switch (getDeliveryMode()) { + case FLAG_MODE_LOCAL: + if (_log.shouldLog(Log.DEBUG)) + _log.debug("mode = local"); + break; + case FLAG_MODE_DESTINATION: + if (_destinationHash == null) throw new DataFormatException("Destination hash is not set"); + _destinationHash.writeBytes(baos); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("mode = destination, hash = " + _destinationHash); + break; + case FLAG_MODE_ROUTER: + if (_routerHash == null) throw new DataFormatException("Router hash is not set"); + _routerHash.writeBytes(baos); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("mode = router, routerHash = " + _routerHash); + break; + case FLAG_MODE_TUNNEL: + if ( (_routerHash == null) || (_tunnelId == null) ) throw new DataFormatException("Router hash or tunnel ID is not set"); + _routerHash.writeBytes(baos); + _tunnelId.writeBytes(baos); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("mode = tunnel, tunnelId = " + _tunnelId.getTunnelId() + + ", routerHash = " + _routerHash); + break; + } + if (getDelayRequested()) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("delay requested: " + getDelaySeconds()); + DataHelper.writeLong(baos, 4, getDelaySeconds()); + } else { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("delay NOT requested"); + } + } catch (IOException ioe) { + throw new DataFormatException("Unable to write out additional info", ioe); + } + return baos.toByteArray(); } public void writeBytes(OutputStream out) throws DataFormatException, IOException { if ( (_deliveryMode < 0) || (_deliveryMode > FLAG_MODE_TUNNEL) ) throw new DataFormatException("Invalid data: mode = " + _deliveryMode); - long flags = getFlags(); - _log.debug("Write flags: " + flags + " mode: " + getDeliveryMode() + " =?= " + flagMode(flags)); - byte additionalInfo[] = getAdditionalInfo(); - DataHelper.writeLong(out, 1, flags); - if (additionalInfo != null) { - out.write(additionalInfo); - out.flush(); - } + long flags = getFlags(); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Write flags: " + flags + " mode: " + getDeliveryMode() + + " =?= " + flagMode(flags)); + byte additionalInfo[] = getAdditionalInfo(); + DataHelper.writeLong(out, 1, flags); + if (additionalInfo != null) { + out.write(additionalInfo); + out.flush(); + } } public boolean equals(Object obj) { if ( (obj == null) || !(obj instanceof DeliveryInstructions)) return false; - DeliveryInstructions instr = (DeliveryInstructions)obj; - return (getDelayRequested() == instr.getDelayRequested()) && - (getDelaySeconds() == instr.getDelaySeconds()) && - (getDeliveryMode() == instr.getDeliveryMode()) && - (getEncrypted() == instr.getEncrypted()) && - DataHelper.eq(getDestination(), instr.getDestination()) && - DataHelper.eq(getEncryptionKey(), instr.getEncryptionKey()) && - DataHelper.eq(getRouter(), instr.getRouter()) && - DataHelper.eq(getTunnelId(), instr.getTunnelId()); + DeliveryInstructions instr = (DeliveryInstructions)obj; + return (getDelayRequested() == instr.getDelayRequested()) && + (getDelaySeconds() == instr.getDelaySeconds()) && + (getDeliveryMode() == instr.getDeliveryMode()) && + (getEncrypted() == instr.getEncrypted()) && + DataHelper.eq(getDestination(), instr.getDestination()) && + DataHelper.eq(getEncryptionKey(), instr.getEncryptionKey()) && + DataHelper.eq(getRouter(), instr.getRouter()) && + DataHelper.eq(getTunnelId(), instr.getTunnelId()); } public int hashCode() { - return (int)getDelaySeconds() + - getDeliveryMode() + - DataHelper.hashCode(getDestination()) + - DataHelper.hashCode(getEncryptionKey()) + - DataHelper.hashCode(getRouter()) + - DataHelper.hashCode(getTunnelId()); + return (int)getDelaySeconds() + + getDeliveryMode() + + DataHelper.hashCode(getDestination()) + + DataHelper.hashCode(getEncryptionKey()) + + DataHelper.hashCode(getRouter()) + + DataHelper.hashCode(getTunnelId()); } public String toString() { - StringBuffer buf = new StringBuffer(128); + StringBuffer buf = new StringBuffer(128); buf.append("[DeliveryInstructions: "); - buf.append("\n\tDelivery mode: "); - switch (getDeliveryMode()) { - case DELIVERY_MODE_LOCAL: - buf.append("local"); - break; - case DELIVERY_MODE_DESTINATION: - buf.append("destination"); - break; - case DELIVERY_MODE_ROUTER: - buf.append("router"); - break; - case DELIVERY_MODE_TUNNEL: - buf.append("tunnel"); - break; - } + buf.append("\n\tDelivery mode: "); + switch (getDeliveryMode()) { + case DELIVERY_MODE_LOCAL: + buf.append("local"); + break; + case DELIVERY_MODE_DESTINATION: + buf.append("destination"); + break; + case DELIVERY_MODE_ROUTER: + buf.append("router"); + break; + case DELIVERY_MODE_TUNNEL: + buf.append("tunnel"); + break; + } buf.append("\n\tDelay requested: ").append(getDelayRequested()); buf.append("\n\tDelay seconds: ").append(getDelaySeconds()); buf.append("\n\tDestination: ").append(getDestination()); @@ -267,7 +279,7 @@ public class DeliveryInstructions extends DataStructureImpl { buf.append("\n\tEncryption key: ").append(getEncryptionKey()); buf.append("\n\tRouter: ").append(getRouter()); buf.append("\n\tTunnelId: ").append(getTunnelId()); - - return buf.toString(); + + return buf.toString(); } } diff --git a/router/java/src/net/i2p/data/i2np/GarlicClove.java b/router/java/src/net/i2p/data/i2np/GarlicClove.java index 983f09442..6f3b0febd 100644 --- a/router/java/src/net/i2p/data/i2np/GarlicClove.java +++ b/router/java/src/net/i2p/data/i2np/GarlicClove.java @@ -84,7 +84,8 @@ public class GarlicClove extends DataStructureImpl { public void readBytes(InputStream in) throws DataFormatException, IOException { _instructions = new DeliveryInstructions(); _instructions.readBytes(in); - _log.debug("Read instructions: " + _instructions); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Read instructions: " + _instructions); try { _msg = _handler.readMessage(in); } catch (I2NPMessageException ime) { @@ -92,10 +93,12 @@ public class GarlicClove extends DataStructureImpl { } _cloveId = DataHelper.readLong(in, 4); _expiration = DataHelper.readDate(in); - _log.debug("CloveID read: " + _cloveId + " expiration read: " + _expiration); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("CloveID read: " + _cloveId + " expiration read: " + _expiration); _certificate = new Certificate(); _certificate.readBytes(in); - _log.debug("Read cert: " + _certificate); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Read cert: " + _certificate); int replyStyle = (int)DataHelper.readLong(in, 1); setSourceRouteBlockAction(replyStyle); if (replyStyle != ACTION_NONE) { @@ -124,13 +127,17 @@ public class GarlicClove extends DataStructureImpl { throw new DataFormatException("Source route block must be specified for non-null action"); _instructions.writeBytes(out); - _log.debug("Wrote instructions: " + _instructions); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Wrote instructions: " + _instructions); _msg.writeBytes(out); DataHelper.writeLong(out, 4, _cloveId); DataHelper.writeDate(out, _expiration); - _log.debug("CloveID written: " + _cloveId + " expiration written: " + _expiration); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("CloveID written: " + _cloveId + " expiration written: " + + _expiration); _certificate.writeBytes(out); - _log.debug("Written cert: " + _certificate); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Written cert: " + _certificate); DataHelper.writeLong(out, 1, _replyAction); if ( (_replyAction != 0) && (_sourceRouteBlock != null) ) _sourceRouteBlock.writeBytes(out); diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java index f36a7fb63..d78b2ee0c 100644 --- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java +++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java @@ -77,7 +77,8 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM } catch (DataFormatException dfe) { throw new I2NPMessageException("Error reading the message header", dfe); } - _log.debug("Reading bytes: type = " + type + " / uniqueId : " + _uniqueId + " / expiration : " + _expiration); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Reading bytes: type = " + type + " / uniqueId : " + _uniqueId + " / expiration : " + _expiration); readMessage(in, type); } public void writeBytes(OutputStream out) throws DataFormatException, IOException { @@ -85,7 +86,8 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM DataHelper.writeLong(out, 1, getType()); DataHelper.writeLong(out, 4, _uniqueId); DataHelper.writeDate(out, _expiration); - _log.debug("Writing bytes: type = " + getType() + " / uniqueId : " + _uniqueId + " / expiration : " + _expiration); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Writing bytes: type = " + getType() + " / uniqueId : " + _uniqueId + " / expiration : " + _expiration); byte[] data = writeMessage(); out.write(data); } catch (I2NPMessageException ime) { diff --git a/router/java/src/net/i2p/data/i2np/TunnelMessage.java b/router/java/src/net/i2p/data/i2np/TunnelMessage.java index a723b2074..1c8c083e9 100644 --- a/router/java/src/net/i2p/data/i2np/TunnelMessage.java +++ b/router/java/src/net/i2p/data/i2np/TunnelMessage.java @@ -60,9 +60,11 @@ public class TunnelMessage extends I2NPMessageImpl { try { _tunnelId = new TunnelId(); _tunnelId.readBytes(in); - _log.debug("Read tunnel message for tunnel " + _tunnelId); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Read tunnel message for tunnel " + _tunnelId); _size = DataHelper.readLong(in, 4); - _log.debug("Read tunnel message size: " + _size); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Read tunnel message size: " + _size); if (_size < 0) throw new I2NPMessageException("Invalid size in the structure: " + _size); _data = new byte[(int)_size]; int read = read(in, _data); @@ -90,17 +92,23 @@ public class TunnelMessage extends I2NPMessageImpl { ByteArrayOutputStream os = new ByteArrayOutputStream(32); try { _tunnelId.writeBytes(os); - _log.debug("Writing tunnel message for tunnel " + _tunnelId); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Writing tunnel message for tunnel " + _tunnelId); DataHelper.writeLong(os, 4, _data.length); - _log.debug("Writing tunnel message length: " + _data.length); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Writing tunnel message length: " + _data.length); os.write(_data); - _log.debug("Writing tunnel message data"); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Writing tunnel message data"); if ( (_verification == null) || (_encryptedInstructions == null) ) { DataHelper.writeLong(os, 1, FLAG_DONT_INCLUDESTRUCTURE); - _log.debug("Writing DontIncludeStructure flag"); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Writing DontIncludeStructure flag"); } else { DataHelper.writeLong(os, 1, FLAG_INCLUDESTRUCTURE); - _log.debug("Writing IncludeStructure flag, then the verification structure, then the E(instr).length [" + _encryptedInstructions.length + "], then the E(instr)"); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Writing IncludeStructure flag, then the verification structure, then the " + + "E(instr).length [" + _encryptedInstructions.length + "], then the E(instr)"); _verification.writeBytes(os); DataHelper.writeLong(os, 2, _encryptedInstructions.length); os.write(_encryptedInstructions); @@ -109,7 +117,8 @@ public class TunnelMessage extends I2NPMessageImpl { throw new I2NPMessageException("Error writing out the message data", dfe); } byte rv[] = os.toByteArray(); - _log.debug("Overall data being written: " + rv.length); + if (_log.shouldLog(Log.DEBUG)) + _log.debug("Overall data being written: " + rv.length); return rv; }