diff --git a/router/java/src/net/i2p/data/i2np/GarlicClove.java b/router/java/src/net/i2p/data/i2np/GarlicClove.java index 218f23579359dba135b4a384dbbf24bfba2ba8dc..e6308fe2937e1c986ba81c3ef3bea99a19ce3940 100644 --- a/router/java/src/net/i2p/data/i2np/GarlicClove.java +++ b/router/java/src/net/i2p/data/i2np/GarlicClove.java @@ -11,7 +11,6 @@ package net.i2p.data.i2np; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.Date; import net.i2p.I2PAppContext; import net.i2p.data.Certificate; @@ -35,7 +34,7 @@ public class GarlicClove extends DataStructureImpl { private DeliveryInstructions _instructions; private I2NPMessage _msg; private long _cloveId; - private Date _expiration; + private long _expiration; private Certificate _certificate; public GarlicClove(I2PAppContext context) { @@ -49,8 +48,8 @@ public class GarlicClove extends DataStructureImpl { public void setData(I2NPMessage msg) { _msg = msg; } public long getCloveId() { return _cloveId; } public void setCloveId(long id) { _cloveId = id; } - public Date getExpiration() { return _expiration; } - public void setExpiration(Date exp) { _expiration = exp; } + public long getExpiration() { return _expiration; } + public void setExpiration(long exp) { _expiration = exp; } public Certificate getCertificate() { return _certificate; } public void setCertificate(Certificate cert) { _certificate = cert; } @@ -79,7 +78,7 @@ public class GarlicClove extends DataStructureImpl { } _cloveId = DataHelper.fromLong(source, cur, 4); cur += 4; - _expiration = DataHelper.fromDate(source, cur); + _expiration = DataHelper.fromLong(source, cur, 8); cur += DataHelper.DATE_LENGTH; _certificate = Certificate.create(source, cur); cur += _certificate.size(); @@ -99,7 +98,7 @@ public class GarlicClove extends DataStructureImpl { I2NPMessageHandler handler = new I2NPMessageHandler(_context); _msg = I2NPMessageImpl.fromRawByteArrayNTCP2(_context, source, offset + isz, len - isz, handler); _cloveId = _msg.getUniqueId(); - _expiration = new Date(_msg.getMessageExpiration()); + _expiration = _msg.getMessageExpiration(); _certificate = Certificate.NULL_CERT; } catch (I2NPMessageException ime) { throw new DataFormatException("Unable to read the message from a garlic clove", ime); @@ -125,7 +124,7 @@ public class GarlicClove extends DataStructureImpl { offset = _msg.toByteArray(rv, offset); DataHelper.toLong(rv, offset, 4, _cloveId); offset += 4; - DataHelper.toDate(rv, offset, _expiration.getTime()); + DataHelper.toLong(rv, offset, 8, _expiration); offset += DataHelper.DATE_LENGTH; offset += _certificate.writeBytes(rv, offset); if (offset != rv.length) { @@ -173,7 +172,7 @@ public class GarlicClove extends DataStructureImpl { return DataHelper.eq(_certificate, clove._certificate) && _cloveId == clove._cloveId && DataHelper.eq(_msg, clove._msg) && - DataHelper.eq(_expiration, clove._expiration) && + _expiration == clove._expiration && DataHelper.eq(_instructions, clove._instructions); } @@ -182,7 +181,7 @@ public class GarlicClove extends DataStructureImpl { return DataHelper.hashCode(_certificate) ^ (int) _cloveId ^ DataHelper.hashCode(_msg) ^ - DataHelper.hashCode(_expiration) ^ + (int) _expiration ^ DataHelper.hashCode(_instructions); } @@ -193,7 +192,7 @@ public class GarlicClove extends DataStructureImpl { buf.append("\n\tInstructions: ").append(_instructions); buf.append("\n\tCertificate: ").append(_certificate); buf.append("\n\tClove ID: ").append(_cloveId); - buf.append("\n\tExpiration: ").append(_expiration); + buf.append("\n\tExpiration: ").append(DataHelper.formatTime(_expiration)); buf.append("\n\tData: ").append(_msg); buf.append("]"); return buf.toString(); diff --git a/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java b/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java index 0d3b61c19fc154423a72723a88310884bff319b7..7527d9a1fa1bc7bc104e9d755cba934f88b0f600 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageBuilder.java @@ -467,7 +467,7 @@ public class GarlicMessageBuilder { private static byte[] buildCommonClove(GarlicClove clove, GarlicConfig config) { clove.setCertificate(config.getCertificate()); clove.setCloveId(config.getId()); - clove.setExpiration(new Date(config.getExpiration())); + clove.setExpiration(config.getExpiration()); clove.setInstructions(config.getDeliveryInstructions()); return clove.toByteArray(); } @@ -514,7 +514,7 @@ public class GarlicMessageBuilder { clove.setData(config.getPayload()); clove.setCertificate(Certificate.NULL_CERT); clove.setCloveId(0); - clove.setExpiration(new Date(config.getExpiration())); + clove.setExpiration(config.getExpiration()); clove.setInstructions(config.getDeliveryInstructions()); return clove; } diff --git a/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java b/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java index 8d7ec11e209c6e4fef9a68f8f64bca4fb5a9265e..d2a1600cf79e5d4e877dcd46279742e372b9014e 100644 --- a/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java +++ b/router/java/src/net/i2p/router/message/GarlicMessageReceiver.java @@ -134,11 +134,11 @@ public class GarlicMessageReceiver { // is no longer a separate field for the clove ID in the transmission format. //String invalidReason = _context.messageValidator().validateMessage(clove.getCloveId(), // clove.getExpiration().getTime()); - String invalidReason = _context.messageValidator().validateMessage(clove.getExpiration().getTime()); + String invalidReason = _context.messageValidator().validateMessage(clove.getExpiration()); boolean rv = invalidReason == null; if (!rv) { - String howLongAgo = DataHelper.formatDuration(_context.clock().now()-clove.getExpiration().getTime()); + String howLongAgo = DataHelper.formatDuration(_context.clock().now()-clove.getExpiration()); if (_log.shouldInfo()) _log.info("Clove is NOT valid: id=" + clove.getCloveId() + " expiration " + howLongAgo + " ago", new Exception("Invalid within..."));