From 37a2ccca9547517d3123c96cf9c413a78fe6ca21 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Mon, 9 Nov 2009 17:21:17 +0000
Subject: [PATCH]     * Streaming: Fix unused resend delay field in the packet
 header,       it is defined as seconds and we were not dividing by 1000,     
  so we were truncating 1000 to one byte which equals 232.

---
 .../src/net/i2p/client/streaming/Connection.java     |  3 ++-
 .../i2p/client/streaming/ConnectionDataReceiver.java |  3 ++-
 .../java/src/net/i2p/client/streaming/Packet.java    | 12 ++++++++++++
 3 files changed, 16 insertions(+), 2 deletions(-)

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;
-- 
GitLab