Merge branch 'windows-port'
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / src / pmutility.c
index 6a7f165..b72c28c 100644 (file)
@@ -345,13 +345,11 @@ exit:
 OCStackResult PMTimeout(unsigned short waittime, bool waitForStackResponse)
 {
     OCStackResult res = OC_STACK_OK;
-    uint64_t startTime;
-    uint64_t currTime;
 
-    startTime = OICGetCurrentTime(TIME_IN_MS);
+    uint64_t startTime = OICGetCurrentTime(TIME_IN_MS);
     while (OC_STACK_OK == res)
     {
-        currTime = OICGetCurrentTime(TIME_IN_MS);
+        uint64_t currTime = OICGetCurrentTime(TIME_IN_MS);
 
         long elapsed = (long)((currTime - startTime) / MS_PER_SEC);
         if (elapsed > waittime)
@@ -575,7 +573,7 @@ static OCStackApplicationResult SecurePortDiscoveryHandler(void *ctx, OCDoHandle
             // Use seure port of doxm for OTM and Provision.
             while (resPayload)
             {
-                if (0 == strncmp(resPayload->uri, OIC_RSRC_DOXM_URI, sizeof(OIC_RSRC_DOXM_URI)))
+                if (0 == strncmp(resPayload->uri, OIC_RSRC_DOXM_URI, strlen(OIC_RSRC_DOXM_URI)))
                 {
                     OIC_LOG_V(INFO,TAG,"resPaylod->uri:%s",resPayload->uri);
                     OIC_LOG(INFO, TAG, "Found doxm resource.");
@@ -698,6 +696,22 @@ static OCStackApplicationResult DeviceDiscoveryHandler(void *ctx, OCDoHandle UNU
                     return OC_STACK_KEEP_TRANSACTION;
                 }
 
+                res = GetDoxmDeviceID(&myId);
+                if(OC_STACK_OK != res)
+                {
+                    OIC_LOG(ERROR, TAG, "Error while getting my UUID.");
+                    DeleteDoxmBinData(ptrDoxm);
+                    return OC_STACK_KEEP_TRANSACTION;
+                }
+                //if this is owned discovery and this is PT's reply, discard it
+                if((pDInfo->isOwnedDiscovery) &&
+                        (0 == memcmp(&ptrDoxm->deviceID.id, &myId.id, sizeof(myId.id))) )
+                {
+                    OIC_LOG(DEBUG, TAG, "discarding provision tool's reply");
+                    DeleteDoxmBinData(ptrDoxm);
+                    return OC_STACK_KEEP_TRANSACTION;
+                }
+
                 res = AddDevice(ppDevicesList, clientResponse->devAddr.addr,
                         clientResponse->devAddr.port,
                         clientResponse->devAddr.adapter,