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
+}