diff options
author | senthil.gs@samsung.com <senthil.gs@samsung.com> | 2019-12-17 11:10:07 +0530 |
---|---|---|
committer | Pyun DoHyun <dh79.pyun@samsung.com> | 2020-01-12 23:05:43 +0000 |
commit | 9aa63e3005c211d9b2967c9ccfcf1cbf8a2c8e2c (patch) | |
tree | 8be6606218a5ad13f4e4c4a00b605d0c2fda711a /resource/csdk/connectivity | |
parent | bd41b92525a8df6c63cc0b1d87e623e453516bd0 (diff) | |
download | iotivity-9aa63e3005c211d9b2967c9ccfcf1cbf8a2c8e2c.tar.gz iotivity-9aa63e3005c211d9b2967c9ccfcf1cbf8a2c8e2c.tar.bz2 iotivity-9aa63e3005c211d9b2967c9ccfcf1cbf8a2c8e2c.zip |
Bug fix in set/unset adapter state change callback. (#640)
A bug was introduced in a recent patch to reduce code complexity,
This patch fixes the issue.
https://github.sec.samsung.net/RS7-IOTIVITY/IoTivity/commit/9a8ff7f20185944857848c6345f87d40ddcd0e87
(cherry-picked from 9a8ff7f20185944857848c6345f87d40ddcd0e87)
Change-Id: I5b15b5ed3bd70e8c81885b7208eba3fbf5ee3330
Signed-off-by: Senthil Kumar G S <senthil.gs@samsung.com>
Signed-off-by: Sudipto <sudipto.bal@samsung.com>
Diffstat (limited to 'resource/csdk/connectivity')
5 files changed, 18 insertions, 14 deletions
diff --git a/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c index 05cddc7bd..50d66de7c 100644 --- a/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c +++ b/resource/csdk/connectivity/src/ip_adapter/android/caipnwmonitor.c @@ -136,12 +136,12 @@ static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status) CAResult_t CAIPSetNetworkMonitorCallback(CAIPAdapterStateChangeCallback callback, CATransportAdapter_t adapter) { - return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, g_adapterCallbackList); + return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, &g_adapterCallbackList); } CAResult_t CAIPUnSetNetworkMonitorCallback(CATransportAdapter_t adapter) { - return CAIPUnSetNetworkMonitorCallbackInternal(adapter, g_adapterCallbackList); + return CAIPUnSetNetworkMonitorCallbackInternal(adapter, &g_adapterCallbackList); } u_arraylist_t *CAFindInterfaceChange() diff --git a/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c index 1fcb957bf..9203401f4 100644 --- a/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c +++ b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.c @@ -54,7 +54,7 @@ void CAIPPassNetworkChangesToAdapterInternal(CANetworkStatus_t status, } CAResult_t CAIPSetNetworkMonitorCallbackInternal(CAIPAdapterStateChangeCallback callback, - CATransportAdapter_t adapter, CAIPCBData_t *adapterCallbackList) + CATransportAdapter_t adapter, CAIPCBData_t **adapterCallbackList) { if (!callback) { @@ -63,7 +63,8 @@ CAResult_t CAIPSetNetworkMonitorCallbackInternal(CAIPAdapterStateChangeCallback } CAIPCBData_t *cbitem = NULL; - LL_FOREACH(adapterCallbackList, cbitem) + CAIPCBData_t *list = *adapterCallbackList; + LL_FOREACH(list, cbitem) { if (cbitem && adapter == cbitem->adapter && callback == cbitem->callback) { @@ -81,22 +82,25 @@ CAResult_t CAIPSetNetworkMonitorCallbackInternal(CAIPAdapterStateChangeCallback cbitem->adapter = adapter; cbitem->callback = callback; - LL_APPEND(adapterCallbackList, cbitem); + LL_APPEND(list, cbitem); + *adapterCallbackList = list; return CA_STATUS_OK; } CAResult_t CAIPUnSetNetworkMonitorCallbackInternal(CATransportAdapter_t adapter, - CAIPCBData_t *adapterCallbackList) + CAIPCBData_t **adapterCallbackList) { CAIPCBData_t *cbitem = NULL; CAIPCBData_t *tmpCbitem = NULL; - LL_FOREACH_SAFE(adapterCallbackList, cbitem, tmpCbitem) + CAIPCBData_t *list = *adapterCallbackList; + LL_FOREACH_SAFE(list, cbitem, tmpCbitem) { if (cbitem && adapter == cbitem->adapter) { OIC_LOG(DEBUG, TAG, "remove specific callback"); - LL_DELETE(adapterCallbackList, cbitem); + LL_DELETE(list, cbitem); + *adapterCallbackList = list; OICFree(cbitem); return CA_STATUS_OK; } diff --git a/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h index 949d0fa92..110c62364 100644 --- a/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h +++ b/resource/csdk/connectivity/src/ip_adapter/caipnwmonitor_common.h @@ -49,10 +49,10 @@ void CAIPPassNetworkChangesToAdapterInternal(CANetworkStatus_t status, CAIPCBData_t *adapterCallbackList, CAIPAdapterPlatform_t platform); CAResult_t CAIPSetNetworkMonitorCallbackInternal(CAIPAdapterStateChangeCallback callback, - CATransportAdapter_t adapter, CAIPCBData_t *adapterCallbackList); + CATransportAdapter_t adapter, CAIPCBData_t **adapterCallbackList); CAResult_t CAIPUnSetNetworkMonitorCallbackInternal(CATransportAdapter_t adapter, - CAIPCBData_t *adapterCallbackList); + CAIPCBData_t **adapterCallbackList); #ifdef __cplusplus } diff --git a/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c index 39fc25772..b93ea8dbf 100644 --- a/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c +++ b/resource/csdk/connectivity/src/ip_adapter/linux/caipnwmonitor.c @@ -234,12 +234,12 @@ static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status) CAResult_t CAIPSetNetworkMonitorCallback(CAIPAdapterStateChangeCallback callback, CATransportAdapter_t adapter) { - return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, g_adapterCallbackList); + return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, &g_adapterCallbackList); } CAResult_t CAIPUnSetNetworkMonitorCallback(CATransportAdapter_t adapter) { - return CAIPUnSetNetworkMonitorCallbackInternal(adapter, g_adapterCallbackList); + return CAIPUnSetNetworkMonitorCallbackInternal(adapter, &g_adapterCallbackList); } static CAInterface_t *CANewInterfaceItem(int index, const char *name, int family, diff --git a/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c b/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c index 036b0f18c..348634312 100644 --- a/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c +++ b/resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c @@ -89,12 +89,12 @@ static void CAIPPassNetworkChangesToAdapter(CANetworkStatus_t status) CAResult_t CAIPSetNetworkMonitorCallback(CAIPAdapterStateChangeCallback callback, CATransportAdapter_t adapter) { - return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, g_adapterCallbackList); + return CAIPSetNetworkMonitorCallbackInternal(callback, adapter, &g_adapterCallbackList); } CAResult_t CAIPUnSetNetworkMonitorCallback(CATransportAdapter_t adapter) { - return CAIPUnSetNetworkMonitorCallbackInternal(adapter, g_adapterCallbackList); + return CAIPUnSetNetworkMonitorCallbackInternal(adapter, &g_adapterCallbackList); } u_arraylist_t *CAFindInterfaceChange() |