From 6eb82077e7b85dc4fd9778967aff562f3a2824e7 Mon Sep 17 00:00:00 2001 From: Ziran Sun Date: Fri, 7 Apr 2017 16:09:52 +0100 Subject: [PATCH] Add check secure port info from EndPoints for Provisioning manager. With OCF1.0 in place, secure and port are removed from policy schema. These information are now available in EndPoints. Add support for this. Otherwise provision discovery fails for format vnd_cbor. Bug: https://jira.iotivity.org/browse/IOT-1987 Change-Id: I999aca98c6e7c5ba16dc1c63e7348c977daf8924 Signed-off-by: Ziran Sun Reviewed-on: https://gerrit.iotivity.org/gerrit/18605 Tested-by: jenkins-iotivity --- .../csdk/security/provisioning/src/pmutility.c | 26 ++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/resource/csdk/security/provisioning/src/pmutility.c b/resource/csdk/security/provisioning/src/pmutility.c index da4f1db..cadb51d 100644 --- a/resource/csdk/security/provisioning/src/pmutility.c +++ b/resource/csdk/security/provisioning/src/pmutility.c @@ -753,6 +753,28 @@ static OCStackApplicationResult SecurePortDiscoveryHandler(void *ctx, OCDoHandle { securePort = resPayload->port; } + else if (resPayload && resPayload->eps) + { + OCEndpointPayload* eps = resPayload->eps; + while (eps != NULL) + { + if ((eps->family & OC_FLAG_SECURE) && + ((OC_IP_USE_V6 == clientResponse->devAddr.flags && + strchr(eps->addr, ':')) || + (OC_IP_USE_V4 == clientResponse->devAddr.flags && + strchr(eps->addr, ',')))) + { + securePort = eps->port; + break; + } + eps = eps->next; + } + if (!securePort) + { + OIC_LOG(INFO, TAG, "Can not find secure port information."); + return OC_STACK_DELETE_TRANSACTION; + } + } else { OIC_LOG(INFO, TAG, "Can not find secure port information."); @@ -763,8 +785,8 @@ static OCStackApplicationResult SecurePortDiscoveryHandler(void *ctx, OCDoHandle #endif DiscoveryInfo* pDInfo = (DiscoveryInfo*)ctx; OCProvisionDev_t *ptr = GetDevice(&pDInfo->pCandidateList, - clientResponse->devAddr.addr, - clientResponse->devAddr.port); + clientResponse->devAddr.addr, + clientResponse->devAddr.port); if(!ptr) { OIC_LOG(ERROR, TAG, "Can not find device information in the discovery candidate device list"); -- 2.7.4