Add clearing network callback info when CATerminate()
authorJaewook Jung <jw0213.jung@samsung.com>
Mon, 3 Apr 2017 02:26:26 +0000 (11:26 +0900)
committerDan Mihai <Daniel.Mihai@microsoft.com>
Thu, 6 Apr 2017 13:01:48 +0000 (13:01 +0000)
Change-Id: Ie6b2ecd307e93e92f67340fe494076b3f0ae2778
Signed-off-by: Jaewook Jung <jw0213.jung@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/18427
Tested-by: jenkins-iotivity <jenkins@iotivity.org>
Reviewed-by: Dan Mihai <Daniel.Mihai@microsoft.com>
resource/csdk/connectivity/src/cainterfacecontroller.c

index 4e6573c..f7fe831 100644 (file)
@@ -198,6 +198,7 @@ static CAResult_t RemoveNetworkStateChangedCallback(CAAdapterStateChangedCB adap
             OIC_LOG(DEBUG, TAG, "remove specific callback");
             LL_DELETE(g_networkChangeCallbackList, callback);
             OICFree(callback);
+            callback = NULL;
             return CA_STATUS_OK;
         }
     }
@@ -212,13 +213,14 @@ static void RemoveAllNetworkStateChangedCallback()
     OIC_LOG(DEBUG, TAG, "Remove All NetworkStateChanged Callback");
 
     CANetworkCallback_t *callback = NULL;
-    LL_FOREACH(g_networkChangeCallbackList, callback)
+    CANetworkCallback_t *tmp = NULL;
+    LL_FOREACH_SAFE(g_networkChangeCallbackList, callback, tmp)
     {
-        OIC_LOG(DEBUG, TAG, "remove all callbacks");
         LL_DELETE(g_networkChangeCallbackList, callback);
         OICFree(callback);
         callback = NULL;
     }
+    g_networkChangeCallbackList = NULL;
 }
 
 #ifdef RA_ADAPTER
@@ -825,6 +827,8 @@ void CATerminateAdapters()
     OICFree(g_adapterHandler);
     g_adapterHandler = NULL;
     g_numberOfAdapters = 0;
+
+    RemoveAllNetworkStateChangedCallback();
 }
 
 #ifdef SINGLE_THREAD