From 7544d0a590fb86a11f26e8d7679d359be9759f92 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Thu, 7 Feb 2019 18:14:18 +0000
Subject: [PATCH] Streaming: Fix exception after sig verify fail log tweaks

---
 .../src/net/i2p/client/streaming/impl/Connection.java     | 8 ++++----
 .../client/streaming/impl/ConnectionPacketHandler.java    | 4 ++--
 .../src/net/i2p/client/streaming/impl/PacketHandler.java  | 3 ++-
 .../src/net/i2p/client/streaming/impl/PacketLocal.java    | 4 ++--
 4 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
index 2860037306..69242acfa5 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/Connection.java
@@ -913,11 +913,11 @@ class Connection {
 
     /**
      *  @param id 0 to 0xffffffff
-     *  @throws RuntimeException if already set to nonzero
+     *  @throws IllegalStateException if already set to nonzero
      */
     public void setSendStreamId(long id) { 
         if (!_sendStreamId.compareAndSet(0, id))
-            throw new RuntimeException("Send stream ID already set [" + _sendStreamId + ", " + id + "]");
+            throw new IllegalStateException("Send stream ID already set [" + _sendStreamId + ", " + id + "]");
     }
     
     /**
@@ -928,11 +928,11 @@ class Connection {
 
     /**
      *  @param id 0 to 0xffffffff
-     *  @throws RuntimeException if already set to nonzero
+     *  @throws IllegalStateException if already set to nonzero
      */
     public void setReceiveStreamId(long id) { 
         if (!_receiveStreamId.compareAndSet(0, id))
-            throw new RuntimeException("Receive stream ID already set [" + _receiveStreamId + ", " + id + "]");
+            throw new IllegalStateException("Receive stream ID already set [" + _receiveStreamId + ", " + id + "]");
         synchronized (_connectLock) { _connectLock.notifyAll(); }
     }
     
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java
index a156b8475a..54c233a035 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/ConnectionPacketHandler.java
@@ -572,8 +572,8 @@ class ConnectionPacketHandler {
             boolean ok = packet.verifySignature(_context, spk, ba.getData());
             _cache.release(ba);
             if (!ok) {
-                if (_log.shouldLog(Log.ERROR))
-                    _log.error("Received unsigned / forged RST on " + con);
+                if (_log.shouldWarn())
+                    _log.warn("Received unsigned / forged RST on " + con);
                 return;
             } else {
                 if (_log.shouldWarn())
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java
index c1ad4cda4c..6e74afed95 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketHandler.java
@@ -204,7 +204,8 @@ class PacketHandler {
                     } catch (I2PException ie) {
                         if (_log.shouldWarn())
                             _log.warn("Sig verify fail for " + con + "/" + oldId + ": " + packet, ie);
-                        con.setSendStreamId(oldId);
+                        // TODO we can't set the stream ID back to 0, throws ISE
+                        //con.setSendStreamId(oldId);
                         if (packet.isFlagSet(Packet.FLAG_SYNCHRONIZE)) {
                             // send a reset, it's a known con, so it's unlikely to be spoofed
                             // don't bother to send reset if it's just a CLOSE
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java
index 346bd6e21f..4a2ada5141 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/impl/PacketLocal.java
@@ -71,10 +71,10 @@ class PacketLocal extends Packet implements MessageOutputStream.WriteStatus {
      * @since 0.9.39 moved from super
      */
     public void setOptionalFrom() { 
-        setFlag(FLAG_FROM_INCLUDED, true);
+        setFlag(FLAG_FROM_INCLUDED);
         _optionFrom = _session.getMyDestination();
         if (_session.isOffline()) {
-            setFlag(FLAG_SIGNATURE_OFFLINE, true);
+            setFlag(FLAG_SIGNATURE_OFFLINE);
             _transientExpires = _session.getOfflineExpiration();
             _transientSigningPublicKey = _session.getTransientSigningPublicKey();
             _offlineSignature = _session.getOfflineSignature();
-- 
GitLab