From ad93106da012bcd2080d229ab5b6c61dd2f59fed Mon Sep 17 00:00:00 2001
From: Muxi Yan <mxyan@google.com>
Date: Sat, 22 Oct 2016 12:00:37 -0700
Subject: [PATCH] Keep a singleton of connectivity monitor in GRPCHost

---
 src/objective-c/GRPCClient/private/GRPCHost.m | 25 ++++++++-----------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/src/objective-c/GRPCClient/private/GRPCHost.m b/src/objective-c/GRPCClient/private/GRPCHost.m
index 9d7b3a7f0b..7031e01eb1 100644
--- a/src/objective-c/GRPCClient/private/GRPCHost.m
+++ b/src/objective-c/GRPCClient/private/GRPCHost.m
@@ -100,19 +100,16 @@ static GRPCConnectivityMonitor *connectivityMonitor = nil;
       _address = address;
       _secure = YES;
       kHostCache[address] = self;
-
-      // When there is host in the cache, keep a single monitor to the network
-      // to
-      // flush the cache if the connectivity status changed
-      if (!connectivityMonitor) {
-        connectivityMonitor =
-            [GRPCConnectivityMonitor monitorWithHost:hostURL.host];
-        void (^handler)() = ^{
-          [GRPCHost flushChannelCache];
-        };
-        [connectivityMonitor handleLossWithHandler:handler
-                           wifiStatusChangeHandler:handler];
-      }
+    }
+    // Keep a single monitor to flush the cache if the connectivity status changed
+    if (!connectivityMonitor) {
+      connectivityMonitor =
+      [GRPCConnectivityMonitor monitorWithHost:hostURL.host];
+      void (^handler)() = ^{
+        [GRPCHost flushChannelCache];
+      };
+      [connectivityMonitor handleLossWithHandler:handler
+                         wifiStatusChangeHandler:handler];
     }
   }
   return self;
@@ -125,8 +122,6 @@ static GRPCConnectivityMonitor *connectivityMonitor = nil;
                                                     BOOL * _Nonnull stop) {
       [host disconnect];
     }];
-    [kHostCache removeAllObjects];
-    connectivityMonitor = nil;
   }
 }
 
-- 
GitLab