From 570f8526b0af89bd1fabfb52ac266fc47c4b29e8 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sun, 30 Jun 2013 17:00:14 +0000
Subject: [PATCH] getSession() cannot be null

---
 .../src/net/i2p/i2ptunnel/I2PTunnelClientBase.java    | 10 +++-------
 .../src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java    |  2 +-
 .../net/i2p/client/streaming/I2PSocketManager.java    |  4 ++++
 .../i2p/client/streaming/I2PSocketManagerFull.java    | 11 +++++++----
 4 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java
index 24bc2d2f7e..0f52c8fbb1 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelClientBase.java
@@ -255,9 +255,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
                 newManager = true;
             } else {
                 I2PSession sess = sockMgr.getSession();
-                if (sess == null) {
-                    newManager = true;
-                } else if (sess.isClosed() &&
+                if (sess.isClosed() &&
                            Boolean.parseBoolean(getTunnel().getClientOptions().getProperty("i2cp.closeOnIdle")) &&
                            Boolean.parseBoolean(getTunnel().getClientOptions().getProperty("i2cp.newDestOnResume"))) {
                     // build a new socket manager and a new dest if the session is closed.
@@ -317,7 +315,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
         Log _log = tunnel.getContext().logManager().getLog(I2PTunnelClientBase.class);
         if (socketManager != null) {
             I2PSession s = socketManager.getSession();
-            if ( (s == null) || (s.isClosed()) ) {
+            if (s.isClosed()) {
                 if (_log.shouldLog(Log.INFO))
                     _log.info(tunnel.getClientOptions().getProperty("inbound.nickname") + ": Building a new socket manager since the old one closed [s=" + s + "]");
                 if (s != null)
@@ -709,9 +707,7 @@ public abstract class I2PTunnelClientBase extends I2PTunnelTask implements Runna
                 }
                 if (!chained) {
                     I2PSession session = sockMgr.getSession();
-                    if (session != null) {
-                        getTunnel().removeSession(session);
-                    }
+                    getTunnel().removeSession(session);
                 } // else the app chaining to this one closes it!
             }
             l.log("Stopping client " + toString());
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
index 3657851438..e0484ac7f7 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelHTTPClient.java
@@ -922,7 +922,7 @@ public class I2PTunnelHTTPClient extends I2PTunnelHTTPClientBase implements Runn
                 // use existing session to look up for efficiency
                 verifySocketManager();
                 I2PSession sess = sockMgr.getSession();
-                if(sess != null && !sess.isClosed()) {
+                if(!sess.isClosed()) {
                     byte[] hData = Base32.decode(destination.substring(0, 52));
                     if(hData != null) {
                         if(_log.shouldLog(Log.INFO)) {
diff --git a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java
index eaa5b667f2..236a2b32cd 100644
--- a/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java
+++ b/apps/ministreaming/java/src/net/i2p/client/streaming/I2PSocketManager.java
@@ -28,6 +28,10 @@ import net.i2p.data.Destination;
  *
  */
 public interface I2PSocketManager {
+
+    /**
+     *  @return the session, non-null
+     */
     public I2PSession getSession();
     
     /**
diff --git a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java
index ec0cd37814..768f59c938 100644
--- a/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java
+++ b/apps/streaming/java/src/net/i2p/client/streaming/I2PSocketManagerFull.java
@@ -65,10 +65,10 @@ public class I2PSocketManagerFull implements I2PSocketManager {
      * This is what I2PSocketManagerFactory.createManager() returns.
      * Direct instantiation by others is deprecated.
      * 
-     * @param context
-     * @param session
-     * @param opts
-     * @param name
+     * @param context non-null
+     * @param session non-null
+     * @param opts may be null
+     * @param name non-null
      */
     public I2PSocketManagerFull(I2PAppContext context, I2PSession session, Properties opts, String name) {
         _context = context;
@@ -103,6 +103,9 @@ public class I2PSocketManagerFull implements I2PSocketManager {
         return curOpts;
     }
     
+    /**
+     *  @return the session, non-null
+     */
     public I2PSession getSession() {
         return _session;
     }
-- 
GitLab