From 65428dda8ed4ff538bb64394248584e088d5d4d9 Mon Sep 17 00:00:00 2001
From: str4d <str4d@mail.i2p>
Date: Sun, 29 Dec 2013 23:29:49 +0000
Subject: [PATCH] Fix IRouterState Service connection leak properly

---
 src/net/i2p/android/router/MainActivity.java | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/net/i2p/android/router/MainActivity.java b/src/net/i2p/android/router/MainActivity.java
index d117f4962..9f5af38ef 100644
--- a/src/net/i2p/android/router/MainActivity.java
+++ b/src/net/i2p/android/router/MainActivity.java
@@ -79,8 +79,10 @@ public class MainActivity extends I2PActivityBase implements
             try {
                 mStateService.unregisterCallback(mStateCallback);
             } catch (RemoteException e) {}
-            unbindService(mStateConnection);
         }
+        if (mTriedBindState)
+            unbindService(mStateConnection);
+        mTriedBindState = false;
         super.onStop();
     }
 
@@ -91,14 +93,15 @@ public class MainActivity extends I2PActivityBase implements
             // Don't auto-create the RouterService.
             Intent intent = new Intent(IRouterState.class.getName());
             intent.setClassName(this, "net.i2p.android.router.service.RouterService");
-            boolean b = bindService(intent,
+            mTriedBindState = bindService(intent,
                     mStateConnection, 0);
-            Util.i("Bind to IRouterState successful: " + b);
+            Util.i("Bind to IRouterState successful: " + mTriedBindState);
         }
 
         super.onRouterBind(svc);
     }
 
+    private boolean mTriedBindState;
     private ServiceConnection mStateConnection = new ServiceConnection() {
         public void onServiceConnected(ComponentName className,
                 IBinder service) {
-- 
GitLab