From 94a8f4d5d4d4146eefbec55b6c1689081588134c Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Wed, 15 Nov 2017 11:43:11 +0900 Subject: [PATCH] Update snapshot(2017-11-14) Signed-off-by: Hongkuk, Son Change-Id: Ic39e3e0fcc79a7cf38d00721cfe9fcfafce0b3c6 --- packaging/snapshot_history.txt | 6 +++ .../csdk/connectivity/src/cainterfacecontroller.c | 49 ++++++++++++++++++++++ .../connectivity/src/tcp_adapter/catcpserver.c | 2 +- 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/packaging/snapshot_history.txt b/packaging/snapshot_history.txt index 7de6bb0..9b727a7 100755 --- a/packaging/snapshot_history.txt +++ b/packaging/snapshot_history.txt @@ -1,3 +1,9 @@ +http://suprem.sec.samsung.net/jira/browse/CONPRO-1131 + +commit_info_2017-11-14.txt + +commit_id: f8b740a6b97c456423747719284085dc21c8066f +---------------------------------------------------------------------------------------------------------------------------------- http://suprem.sec.samsung.net/jira/browse/CONPRO-1124 commit_info_2017-11-08.txt diff --git a/resource/csdk/connectivity/src/cainterfacecontroller.c b/resource/csdk/connectivity/src/cainterfacecontroller.c index 525f79f..c892289 100755 --- a/resource/csdk/connectivity/src/cainterfacecontroller.c +++ b/resource/csdk/connectivity/src/cainterfacecontroller.c @@ -37,6 +37,7 @@ #include "cainterface.h" #include "caipinterface.h" #include +#include "octhread.h" #ifdef RA_ADAPTER #include "caraadapter.h" @@ -66,6 +67,11 @@ static CAErrorHandleCallback g_errorHandleCallback = NULL; static struct CANetworkCallback_t * g_networkChangeCallbackList = NULL; /** + * Mutex to synchronize network change list. + */ +static oc_mutex g_mutexNetCallbackList = NULL; + +/** * network callback structure is handling * for adapter state changed and connection state changed event. */ @@ -146,12 +152,14 @@ static CAResult_t AddNetworkStateChangedCallback(CAAdapterStateChangedCB adapter return CA_STATUS_INVALID_PARAM; } + oc_mutex_lock(g_mutexNetCallbackList); CANetworkCallback_t* callback = NULL; LL_FOREACH(g_networkChangeCallbackList, callback) { if (callback && adapterCB == callback->adapter && connCB == callback->conn) { OIC_LOG(DEBUG, TAG, "this callback is already added"); + oc_mutex_unlock(g_mutexNetCallbackList); return CA_STATUS_OK; } } @@ -160,12 +168,14 @@ static CAResult_t AddNetworkStateChangedCallback(CAAdapterStateChangedCB adapter if (NULL == callback) { OIC_LOG(ERROR, TAG, "Memory allocation failed during registration"); + oc_mutex_unlock(g_mutexNetCallbackList); return CA_MEMORY_ALLOC_FAILED; } callback->adapter = adapterCB; callback->conn = connCB; LL_APPEND(g_networkChangeCallbackList, callback); + oc_mutex_unlock(g_mutexNetCallbackList); OIC_LOG_V(INFO, TAG, "Added NetworkStateChanged Callback [%p]", callback); return CA_STATUS_OK; @@ -185,6 +195,7 @@ static CAResult_t RemoveNetworkStateChangedCallback(CAAdapterStateChangedCB adap { OIC_LOG(DEBUG, TAG, "Remove NetworkStateChanged Callback"); + oc_mutex_lock(g_mutexNetCallbackList); CANetworkCallback_t* callback = NULL; LL_FOREACH(g_networkChangeCallbackList, callback) { @@ -192,10 +203,13 @@ static CAResult_t RemoveNetworkStateChangedCallback(CAAdapterStateChangedCB adap { OIC_LOG(DEBUG, TAG, "remove specific callback"); LL_DELETE(g_networkChangeCallbackList, callback); + oc_mutex_unlock(g_mutexNetCallbackList); OICFree(callback); return CA_STATUS_OK; } } + oc_mutex_unlock(g_mutexNetCallbackList); + return CA_STATUS_OK; } @@ -222,6 +236,8 @@ static CAResult_t CAReceivedPacketCallback(const CASecureEndpoint_t *sep, static void CAAdapterChangedCallback(CATransportAdapter_t adapter, CANetworkStatus_t status) { + + oc_mutex_lock(g_mutexNetCallbackList); // Call the callback. CANetworkCallback_t* callback = NULL; LL_FOREACH(g_networkChangeCallbackList, callback) @@ -240,12 +256,14 @@ static void CAAdapterChangedCallback(CATransportAdapter_t adapter, CANetworkStat OIC_LOG_V(INFO, TAG, "OUT application adapter changed callback [%p]", callback); } } + oc_mutex_unlock(g_mutexNetCallbackList); OIC_LOG_V(DEBUG, TAG, "[%d] adapter status is changed to [%d]", adapter, status); } #if defined(TCP_ADAPTER) || defined(EDR_ADAPTER) || defined(LE_ADAPTER) static void CAConnectionChangedCallback(const CAEndpoint_t *info, bool isConnected) { + oc_mutex_lock(g_mutexNetCallbackList); // Call the callback. CANetworkCallback_t* callback = NULL; LL_FOREACH(g_networkChangeCallbackList, callback) @@ -255,6 +273,7 @@ static void CAConnectionChangedCallback(const CAEndpoint_t *info, bool isConnect callback->conn(info, isConnected); } } + oc_mutex_unlock(g_mutexNetCallbackList); OIC_LOG_V(DEBUG, TAG, "[%s] connection status is changed to [%d]", info->addr, isConnected); } #endif @@ -272,10 +291,38 @@ static void CAAdapterErrorHandleCallback(const CAEndpoint_t *endpoint, } } +static void CADestroyMutex() +{ + if (g_mutexNetCallbackList) + { + oc_mutex_free(g_mutexNetCallbackList); + g_mutexNetCallbackList = NULL; + } +} + +static CAResult_t CACreateMutex() +{ + if (!g_mutexNetCallbackList) + { + g_mutexNetCallbackList = oc_mutex_new(); + if (!g_mutexNetCallbackList) + { + return CA_STATUS_FAILED; + } + } + + return CA_STATUS_OK; +} + void CAInitializeAdapters(ca_thread_pool_t handle, CATransportAdapter_t transportType) { OIC_LOG_V(DEBUG, TAG, "initialize adapters %d", transportType); + if (CA_STATUS_OK != CACreateMutex()) + { + OIC_LOG(ERROR, TAG, "Failed to create mutex!"); + } + // Initialize ssl adapter. #if defined(__WITH_DTLS__) || defined(__WITH_TLS__) if (CA_STATUS_OK != CAinitSslAdapter()) @@ -780,6 +827,8 @@ CAResult_t CAStartDiscoveryServerAdapters() void CATerminateAdapters() { + CADestroyMutex(); + for (uint32_t index = 0; index < g_numberOfAdapters; index++) { if (g_adapterHandler[index].terminate != NULL) diff --git a/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c b/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c index f698c88..2d7df00 100644 --- a/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c +++ b/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c @@ -1126,7 +1126,7 @@ static ssize_t sendData(const CAEndpoint_t *endpoint, const void *data, return len; } sendCounter++; - OIC_LOG_V(WARNING, TAG, "send blocked. trying %n attempt from 100", sendCounter); + OIC_LOG_V(WARNING, TAG, "send blocked. trying %zu attempt from 100", sendCounter); if(sendCounter >= 100) { return len; -- 2.7.4