From f310eeffe3b2327a44eddd2487149441d7fd81fe Mon Sep 17 00:00:00 2001 From: "jihwan.seo" Date: Tue, 10 Nov 2015 19:49:30 +0900 Subject: [PATCH] Enabled callback message for retransmission timeout. if retransmission time is over, ACK/EMPTY message should be sent into routing manager without token. Change-Id: I1cffb4d3d9064c7b8b6772fcf515b922576951d2 Signed-off-by: jihwan.seo Reviewed-on: https://gerrit.iotivity.org/gerrit/4109 Reviewed-by: Hyuna Jo Tested-by: jenkins-iotivity Reviewed-by: Jon A. Cruz --- resource/csdk/connectivity/src/cablockwisetransfer.c | 15 ++++++++++++--- resource/csdk/connectivity/src/camessagehandler.c | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/resource/csdk/connectivity/src/cablockwisetransfer.c b/resource/csdk/connectivity/src/cablockwisetransfer.c index 73e00c2..5df026e 100644 --- a/resource/csdk/connectivity/src/cablockwisetransfer.c +++ b/resource/csdk/connectivity/src/cablockwisetransfer.c @@ -309,9 +309,18 @@ CAResult_t CAReceiveBlockWiseData(coap_pdu_t *pdu, const CAEndpoint_t *endpoint, endpoint->port); if(NULL == blockDataID || NULL == blockDataID->id || blockDataID->idLength < 1) { - OIC_LOG(ERROR, TAG, "blockId is null"); - CADestroyBlockID(blockDataID); - return CA_STATUS_FAILED; + // if retransmission is timeout, callback msg will be send without token. + if (NULL == blockDataID && !receivedData->responseInfo->info.token) + { + OIC_LOG(INFO, TAG, "retransmission was stopped"); + return CA_REQUEST_TIMEOUT; + } + else + { + OIC_LOG(ERROR, TAG, "blockId is null"); + CADestroyBlockID(blockDataID); + return CA_STATUS_FAILED; + } } CARemoveBlockDataFromList(blockDataID); diff --git a/resource/csdk/connectivity/src/camessagehandler.c b/resource/csdk/connectivity/src/camessagehandler.c index fffbc78..ebd43c5 100644 --- a/resource/csdk/connectivity/src/camessagehandler.c +++ b/resource/csdk/connectivity/src/camessagehandler.c @@ -794,7 +794,7 @@ static void CAReceivedPacketCallback(const CASecureEndpoint_t *sep, ) { CAResult_t res = CAReceiveBlockWiseData(pdu, &(sep->endpoint), cadata, dataLen); - if (CA_NOT_SUPPORTED == res) + if (CA_NOT_SUPPORTED == res || CA_REQUEST_TIMEOUT == res) { OIC_LOG(ERROR, TAG, "this message does not have block option"); CAQueueingThreadAddData(&g_receiveThread, cadata, sizeof(CAData_t)); -- 2.7.4