diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java index a47d361a66..9435727c4a 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/Connection.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/Connection.java @@ -1105,7 +1105,8 @@ public class Connection { if (choke > 0) _packet.setFlag(Packet.FLAG_DELAY_REQUESTED); _packet.setOptionalMaxSize(getOptions().getMaxMessageSize()); - _packet.setResendDelay(getOptions().getResendDelay()); + // bugfix release 0.7.8, we weren't dividing by 1000 + _packet.setResendDelay(getOptions().getResendDelay() / 1000); if (_packet.getReceiveStreamId() <= 0) _packet.setReceiveStreamId(_receiveStreamId); if (_packet.getSendStreamId() <= 0) diff --git a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionDataReceiver.java b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionDataReceiver.java index 281203d914..3b55160d3d 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/ConnectionDataReceiver.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/ConnectionDataReceiver.java @@ -170,7 +170,8 @@ class ConnectionDataReceiver implements MessageOutputStream.DataReceiver { packet.setOptionalDelay(choke); if (choke > 0) packet.setFlag(Packet.FLAG_DELAY_REQUESTED); - packet.setResendDelay(con.getOptions().getResendDelay()); + // bugfix release 0.7.8, we weren't dividing by 1000 + packet.setResendDelay(con.getOptions().getResendDelay() / 1000); if (con.getOptions().getProfile() == ConnectionOptions.PROFILE_INTERACTIVE) packet.setFlag(Packet.FLAG_PROFILE_INTERACTIVE, true); diff --git a/apps/streaming/java/src/net/i2p/client/streaming/Packet.java b/apps/streaming/java/src/net/i2p/client/streaming/Packet.java index 2a6ae59ad1..85981d9e62 100644 --- a/apps/streaming/java/src/net/i2p/client/streaming/Packet.java +++ b/apps/streaming/java/src/net/i2p/client/streaming/Packet.java @@ -216,9 +216,21 @@ public class Packet { * resending this packet (if it hasn't yet been ACKed). The * value is seconds since the packet was created. * + * Unused. + * Broken before release 0.7.8 + * Not to be used without sanitizing for huge values. + * Setters from options did not divide by 1000, and the options default + * is 1000, so the value sent in the 1-byte field was always + * 1000 & 0xff = 0xe8 = 232 + * * @return Delay before resending a packet in seconds. */ public int getResendDelay() { return _resendDelay; } + /** + * Unused. + * Broken before release 0.7.8 + * See above + */ public void setResendDelay(int numSeconds) { _resendDelay = numSeconds; } public static final int MAX_PAYLOAD_SIZE = 32*1024;