Fix VpnSettings.StatusChecker.start()

to avoid multiple threads checking status at the same time.
diff --git a/src/com/android/settings/vpn/AuthenticationActor.java b/src/com/android/settings/vpn/AuthenticationActor.java
index 2584fbd..a05cfa7 100644
--- a/src/com/android/settings/vpn/AuthenticationActor.java
+++ b/src/com/android/settings/vpn/AuthenticationActor.java
@@ -195,8 +195,8 @@
         if (bindService(c)) {
             // wait for a second, let status propagate
             wait(c, ONE_SECOND);
+            mContext.unbindService(c);
         }
-        mContext.unbindService(c);
     }
 
     private boolean bindService(ServiceConnection c) {
diff --git a/src/com/android/settings/vpn/VpnSettings.java b/src/com/android/settings/vpn/VpnSettings.java
index 08dd8dd..1446164 100644
--- a/src/com/android/settings/vpn/VpnSettings.java
+++ b/src/com/android/settings/vpn/VpnSettings.java
@@ -932,7 +932,7 @@
     // managing status check in a background thread
     private class StatusChecker {
         private Set<VpnProfile> mQueue = new HashSet<VpnProfile>();
-        private boolean mPaused;
+        private boolean mPaused = true;
         private ConditionVariable mThreadCv = new ConditionVariable();
 
         void onPause() {
@@ -941,7 +941,6 @@
         }
 
         synchronized void onResume() {
-            mPaused = false;
             start();
         }
 
@@ -961,7 +960,9 @@
             return p;
         }
 
-        private void start() {
+        private synchronized void start() {
+            if (!mPaused) return;
+            mPaused = false;
             mThreadCv.close();
             new Thread(new Runnable() {
                 public void run() {