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