From 06e1305df28087dffdb737d5c51d8580db0111de Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 6 Feb 2009 21:19:45 +0000
Subject: [PATCH] prevent race NPE http://forum.i2p/viewtopic.php?t=3066

---
 core/java/src/net/i2p/data/i2cp/I2CPMessageReader.java | 9 ++++++---
 1 file changed, 6 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 53650ec199..13b01a67ad 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
+}
-- 
GitLab