From 6018efac19eee094d340d353673df673ad4f1c4e Mon Sep 17 00:00:00 2001 From: "Hongkuk, Son" Date: Fri, 3 Nov 2017 10:17:44 +0900 Subject: [PATCH] Update snapshot(2017-11-02) Signed-off-by: Hongkuk, Son Change-Id: I2a5a1b9b72b71b1979f136aadce4ac0534765641 --- packaging/snapshot_history.txt | 6 ++++++ .../connectivity/src/tcp_adapter/catcpadapter.c | 15 +++++++++++++++ .../csdk/connectivity/src/tcp_adapter/catcpserver.c | 21 ++++++++++++--------- resource/csdk/stack/src/ocobserve.c | 3 ++- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/packaging/snapshot_history.txt b/packaging/snapshot_history.txt index 2cb3600..5122241 100755 --- a/packaging/snapshot_history.txt +++ b/packaging/snapshot_history.txt @@ -1,3 +1,9 @@ +http://suprem.sec.samsung.net/jira/browse/CONPRO-1120 + +commit_info_2017-11-02.txt + +commit_id: 76b245106f57facdff8caa062c5b871ad2f42367 +---------------------------------------------------------------------------------------------------------------------------------- http://suprem.sec.samsung.net/jira/browse/CONPRO-1110 commit_info_2017-10-25.txt diff --git a/resource/csdk/connectivity/src/tcp_adapter/catcpadapter.c b/resource/csdk/connectivity/src/tcp_adapter/catcpadapter.c index 67905f6..ac6f6d7 100644 --- a/resource/csdk/connectivity/src/tcp_adapter/catcpadapter.c +++ b/resource/csdk/connectivity/src/tcp_adapter/catcpadapter.c @@ -471,17 +471,32 @@ CAResult_t CATCPDisconnectSession(const CAEndpoint_t *endpoint) if (CA_STATUS_OK != res) { OIC_LOG(ERROR, TAG, "failed to close TLS session"); + res = CAQueueingThreadClearContextData(g_sendQueueHandle, + CAClearQueueEndpointDataContext, + endpoint); + if (CA_STATUS_OK != res) + { + OIC_LOG(ERROR, TAG, "failed to clear context data"); + } + return res; } #endif + res = CASearchAndDeleteTCPSession(endpoint); if (CA_STATUS_OK != res) { OIC_LOG(ERROR, TAG, "failed to close TCP session"); } + res = CAQueueingThreadClearContextData(g_sendQueueHandle, CAClearQueueEndpointDataContext, endpoint); + if (CA_STATUS_OK != res) + { + OIC_LOG(ERROR, TAG, "failed to clear context data"); + } + return res; } diff --git a/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c b/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c index 16ed703..eaee7f3 100644 --- a/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c +++ b/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c @@ -612,14 +612,10 @@ static void CAReceiveMessage(int fd) //disconnect session and clean-up data if any error occurs if (res != CA_STATUS_OK) { -#ifdef __WITH_TLS__ - if (CA_STATUS_OK != CAcloseSslConnection(&svritem->sep.endpoint)) + if (CA_STATUS_OK != CATCPDisconnectSession(&svritem->sep.endpoint)) { - OIC_LOG(ERROR, TAG, "Failed to close TLS session"); + OIC_LOG(ERROR, TAG, "Failed to disconnect TCP session"); } -#endif - CASearchAndDeleteTCPSession(&(svritem->sep.endpoint)); - return; } } @@ -1113,20 +1109,27 @@ static ssize_t sendData(const CAEndpoint_t *endpoint, const void *data, ssize_t remainLen = dlen; do { + size_t sendCounter = 0; #ifdef MSG_NOSIGNAL - ssize_t len = send(sockFd, data, remainLen, MSG_NOSIGNAL); + ssize_t len = send(sockFd, data, remainLen, MSG_DONTWAIT | MSG_NOSIGNAL); #else - ssize_t len = send(sockFd, data, remainLen, 0); + ssize_t len = send(sockFd, data, remainLen, MSG_DONTWAIT); #endif if (-1 == len) { - if (EWOULDBLOCK != errno) + if (EWOULDBLOCK != errno && EAGAIN != errno) { OIC_LOG_V(ERROR, TAG, "unicast ipv4tcp sendTo failed: %s", strerror(errno)); CALogSendStateInfo(endpoint->adapter, endpoint->addr, endpoint->port, len, false, strerror(errno)); return len; } + sendCounter++; + OIC_LOG_V(WARNING, TAG, "send blocked. trying %n attempt from 100", sendCounter); + if(sendCounter >= 100) + { + return len; + } continue; } data += len; diff --git a/resource/csdk/stack/src/ocobserve.c b/resource/csdk/stack/src/ocobserve.c index d2cc07c..db055ba 100644 --- a/resource/csdk/stack/src/ocobserve.c +++ b/resource/csdk/stack/src/ocobserve.c @@ -657,8 +657,9 @@ ResourceObserver* GetObserverUsingToken (const CAToken_t token, uint8_t tokenLen if ((memcmp(out->token, token, tokenLength) == 0)) { OIC_LOG(INFO, TAG, "Found in observer list"); + ResourceObserver *observer = CloneObserverNode(out); oc_mutex_unlock(g_serverObsListMutex); - return CloneObserverNode(out); + return observer; } CheckTimedOutObserver(out); } -- 2.7.4