X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fconnectivity%2Fsrc%2Ftcp_adapter%2Fcatcpserver.c;h=2d7df005c5f38bc64f65e6c68ffb65f5433f3271;hb=94a8f4d5d4d4146eefbec55b6c1689081588134c;hp=16ed703318474d29ad2d93f05e60d00ef7e236e1;hpb=7f00f942c39b7bc27c7eeecf213a239c3fe4173c;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c b/resource/csdk/connectivity/src/tcp_adapter/catcpserver.c index 16ed703..2d7df00 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; } } @@ -1066,6 +1062,7 @@ size_t CACheckPayloadLengthFromHeader(const void *data, size_t dlen) if (!pdu) { OIC_LOG(ERROR, TAG, "outpdu is null"); + OIC_LOG_V(ERROR, TAG, "data length: %zu", dlen); return 0; } @@ -1113,20 +1110,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 %zu attempt from 100", sendCounter); + if(sendCounter >= 100) + { + return len; + } continue; } data += len;