diff --git a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java index 53650ec199fd6128f0c54c9aa9a420720f39b8eb..13b01a67addd44489699ce9df8a8a97d7547bc5a 100644 --- a/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java +++ b/core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java @@ -134,9 +134,11 @@ public class I2CPMessageReader { public void cancelRunner() { _doRun = false; _stayAlive = false; - if (_stream != null) { + // prevent race NPE + InputStream in = _stream; + if (in != null) { try { - _stream.close(); + in.close(); } catch (IOException ioe) { _log.error("Error closing the stream", ioe); } @@ -164,6 +166,7 @@ public class I2CPMessageReader { _listener.disconnected(I2CPMessageReader.this); cancelRunner(); } catch (OutOfMemoryError oom) { + // ooms seen here... maybe log and keep going? throw oom; } catch (Exception e) { _log.log(Log.CRIT, "Unhandled error reading I2CP stream", e); @@ -182,4 +185,4 @@ public class I2CPMessageReader { // boom bye bye bad bwoy } } -} \ No newline at end of file +}