From 3917dc6d2faa881f6ad94636f4b734fea93178c6 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 10 Sep 2021 13:43:26 -0400 Subject: [PATCH] I2CP: Don't call listener.readError() after external client disconnect via destroySocketManager() prevents log error on normal client shutdown reported and tested by zlatinb --- core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java index d57e4b732..4b93c52d8 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java @@ -190,10 +190,14 @@ public class I2CPMessageReader { _listener.readError(I2CPMessageReader.this, ime); cancelRunner(); } catch (IOException ioe) { - _log.warn("IO Error handling message", ioe); - _listener.readError(I2CPMessageReader.this, ioe); + if (_stayAlive) { + _log.warn("IO Error handling message", ioe); + _listener.readError(I2CPMessageReader.this, ioe); + } // else triggered by cancelRunner(), ignore SocketException _listener.disconnected(I2CPMessageReader.this); - cancelRunner(); + if (_stayAlive) { + cancelRunner(); + } } catch (OutOfMemoryError oom) { // ooms seen here... maybe log and keep going? throw oom;