if (ctx == NULL)
{
OC_LOG(ERROR, TAG, "Lost List of device information");
- return OC_STACK_KEEP_TRANSACTION;
+ return OC_STACK_DELETE_TRANSACTION;
}
(void)UNUSED;
if (clientResponse)
if (PAYLOAD_TYPE_DISCOVERY != clientResponse->payload->type)
{
OC_LOG(INFO, TAG, "Wrong payload type");
- return OC_STACK_KEEP_TRANSACTION;
+ return OC_STACK_DELETE_TRANSACTION;
}
uint16_t securePort = 0;
else
{
OC_LOG(INFO, TAG, "Can not find secure port information.");
- return OC_STACK_KEEP_TRANSACTION;
+ return OC_STACK_DELETE_TRANSACTION;
}
DiscoveryInfo* pDInfo = (DiscoveryInfo*)ctx;
if (OC_STACK_OK != res)
{
OC_LOG(ERROR, TAG, "Error while getting secure port.");
- return OC_STACK_KEEP_TRANSACTION;
+ return OC_STACK_DELETE_TRANSACTION;
}
OC_LOG(INFO, TAG, "Exiting SecurePortDiscoveryHandler.");
}
- return OC_STACK_KEEP_TRANSACTION;
+ return OC_STACK_DELETE_TRANSACTION;
}
else
{
const char* query = isOwned ? DOXM_OWNED_TRUE_MULTICAST_QUERY :
DOXM_OWNED_FALSE_MULTICAST_QUERY;
- res = OCDoResource(NULL, OC_REST_DISCOVER, query, 0, 0,
+ OCDoHandle handle = NULL;
+ res = OCDoResource(&handle, OC_REST_DISCOVER, query, 0, 0,
CT_DEFAULT, OC_LOW_QOS, &cbData, NULL, 0);
if (res != OC_STACK_OK)
{
OC_LOG(ERROR, TAG, "OCStack resource error");
- goto exit;
+ OICFree(pDInfo);
+ return res;
}
//Waiting for each response.
if(OC_STACK_OK != res)
{
OC_LOG(ERROR, TAG, "Failed to wait response for secure discovery.");
- goto exit;
+ OICFree(pDInfo);
+ OCStackResult resCancel = OCCancel(handle, OC_LOW_QOS, NULL, 0);
+ if(OC_STACK_OK != resCancel)
+ {
+ OC_LOG(ERROR, TAG, "Failed to remove registered callback");
+ }
+ return res;
+ }
+ res = OCCancel(handle,OC_LOW_QOS,NULL,0);
+ if (OC_STACK_OK != res)
+ {
+ OC_LOG(ERROR, TAG, "Failed to remove registered callback");
+ OICFree(pDInfo);
+ return res;
}
-
OC_LOG(DEBUG, TAG, "OUT PMDeviceDiscovery");
-
-exit:
OICFree(pDInfo);
return res;
}
switch (myStackMode)
{
case OC_CLIENT:
- CARegisterHandler(HandleCARequests, HandleCAResponses, HandleCAErrorResponse);
+ CARegisterHandler(HandleCARequests, HandleCAResponses, HandleCAErrorResponse);
result = CAResultToOCResult(CAStartDiscoveryServer());
OC_LOG(INFO, TAG, "Client mode: CAStartDiscoveryServer");
break;
case OC_SERVER:
- SRMRegisterHandler(HandleCARequests, HandleCAResponses, HandleCAErrorResponse);
+ SRMRegisterHandler(HandleCARequests, HandleCAResponses, HandleCAErrorResponse);
result = CAResultToOCResult(CAStartListeningServer());
OC_LOG(INFO, TAG, "Server mode: CAStartListeningServer");
break;
case OC_CLIENT_SERVER:
case OC_GATEWAY:
- SRMRegisterHandler(HandleCARequests, HandleCAResponses, HandleCAErrorResponse);
+ SRMRegisterHandler(HandleCARequests, HandleCAResponses, HandleCAErrorResponse);
result = CAResultToOCResult(CAStartListeningServer());
if(result == OC_STACK_OK)
{
// Remove all the client callbacks
DeleteClientCBList();
- // De-init the SRM Policy Engine
+ // De-init the SRM Policy Engine
// TODO after BeachHead delivery: consolidate into single SRMDeInit()
SRMDeInitPolicyEngine();
break;
+ case OC_REST_DISCOVER:
+ OC_LOG_V(INFO, TAG, "Cancelling discovery callback for resource %s",
+ clientCB->requestUri);
+ FindAndDeleteClientCB(clientCB);
+ break;
+
#ifdef WITH_PRESENCE
case OC_REST_PRESENCE:
FindAndDeleteClientCB(clientCB);