+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
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;
}
//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;
}
}
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;
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);
}