Fix bug for Cloud service of consumer service.
authorKIM JungYong <jyong2.kim@samsung.com>
Tue, 30 Aug 2016 07:04:29 +0000 (16:04 +0900)
committerUze Choi <uzchoi@samsung.com>
Fri, 2 Sep 2016 07:48:55 +0000 (07:48 +0000)
For connect to Cloud, making uri, parsing address, constructing query was fixed.

Address converter is modified for TCP requests.

Change-Id: I714ce22e53ba05aab7f1be1512ccddfe46cdeb78
Signed-off-by: KIM JungYong <jyong2.kim@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/11113
Reviewed-by: Uze Choi <uzchoi@samsung.com>
Tested-by: Uze Choi <uzchoi@samsung.com>
service/notification/src/consumer/NSConsumerCommunication.c
service/notification/src/consumer/NSConsumerDiscovery.c
service/notification/src/consumer/NSConsumerInterface.c

index 7a794ab..80b9559 100644 (file)
@@ -360,11 +360,11 @@ OCStackResult NSSendSyncInfo(NSSyncInfo * syncInfo, OCDevAddr * addr)
 
 char * NSGetCloudUri(const char * providerId, char * uri)
 {
-    size_t uriLen = NS_DEVICE_ID_LENGTH + 1 + strlen(uri) + 1;
+    size_t uriLen = NS_DEVICE_ID_LENGTH + 1 + strlen(uri) + 1 + 3;
     char * retUri = (char *)OICMalloc(uriLen);
     NS_VERIFY_NOT_NULL_WITH_POST_CLEANING(retUri, NULL, NSOICFree(uri));
 
-    snprintf(retUri, uriLen, "/%s%s", providerId, uri);
+    snprintf(retUri, uriLen, "/di/%s%s", providerId, uri);
     NSOICFree(uri);
     NS_LOG_V(DEBUG, "Cloud uri : %s", retUri);
 
index e28a17a..208a6ae 100644 (file)
@@ -43,6 +43,7 @@ OCStackApplicationResult NSConsumerPresenceListener(
     (void) handle;
 
     NS_VERIFY_NOT_NULL(clientResponse, OC_STACK_KEEP_TRANSACTION);
+    NS_VERIFY_NOT_NULL(clientResponse->payload, OC_STACK_KEEP_TRANSACTION);
     NS_VERIFY_STACK_SUCCESS(
             NSOCResultToSuccess(clientResponse->result), OC_STACK_KEEP_TRANSACTION);
 
@@ -111,6 +112,8 @@ OCStackApplicationResult NSProviderDiscoverListener(
     }
 
     OCResourcePayload * resource = ((OCDiscoveryPayload *)clientResponse->payload)->resources;
+    NS_LOG_V(DEBUG, "Discovered resource uri : %s",
+                        resource->uri);
     while (resource)
     {
         NS_VERIFY_NOT_NULL(resource->uri, OC_STACK_KEEP_TRANSACTION);
@@ -158,7 +161,7 @@ OCStackApplicationResult NSIntrospectProvider(
 
     NSProvider_internal * newProvider = NSGetProvider(clientResponse);
     NS_VERIFY_NOT_NULL(newProvider, OC_STACK_KEEP_TRANSACTION);
-    if (ctx && *((NSConsumerDiscoverType *)ctx) == NS_DISCOVER_CLOUD )
+    if (ctx && ctx == (void *)NS_DISCOVER_CLOUD )
     {
         newProvider->connection->isCloudConnection = true;
     }
@@ -271,7 +274,7 @@ OCDevAddr * NSChangeAddress(const char * address)
     }
 
     int tmp = index + 1;
-    uint16_t port = address[tmp++];
+    uint16_t port = address[tmp++] - '0';
 
     while(address[tmp] != '\0')
     {
@@ -283,9 +286,15 @@ OCDevAddr * NSChangeAddress(const char * address)
     NS_VERIFY_NOT_NULL(retAddr, NULL);
 
     retAddr->adapter = OC_ADAPTER_TCP;
-    OICStrcpy(retAddr->addr, index - 1, address);
+    OICStrcpy(retAddr->addr, index + 1, address);
     retAddr->addr[index] = '\0';
     retAddr->port = port;
+    retAddr->flags = OC_IP_USE_V6;
+
+    NS_LOG(DEBUG, "Change Address for TCP request");
+    NS_LOG_V(DEBUG, "Origin : %s", address);
+    NS_LOG_V(DEBUG, "Changed Addr : %s", retAddr->addr);
+    NS_LOG_V(DEBUG, "Changed Port : %d", retAddr->port);
 
     return retAddr;
 }
@@ -311,7 +320,7 @@ void NSConsumerHandleRequestDiscover(OCDevAddr * address, NSConsumerDiscoverType
 
             if (rType == NS_DISCOVER_CLOUD)
             {
-                *callbackData = NS_DISCOVER_CLOUD;
+                callbackData = (void *) NS_DISCOVER_CLOUD;
             }
         }
         else
index 2d56778..3858873 100644 (file)
@@ -72,7 +72,19 @@ NSResult NSConsumerEnableRemoteService(char *serverAddress)
     bool isStartedConsumer = NSIsStartedConsumer();
     NS_VERIFY_NOT_NULL(isStartedConsumer == true ? (void *) 1 : NULL, NS_ERROR);
 
-    char * queryAddr = OICStrdup(serverAddress);
+    char * queryAddr = NULL;
+    if (strstr(serverAddress, "coap+tcp://"))
+    {
+        queryAddr = OICStrdup(serverAddress+11);
+    }
+    else if (strstr(serverAddress, "coap://"))
+    {
+        queryAddr = OICStrdup(serverAddress+7);
+    }
+    else
+    {
+        queryAddr = OICStrdup(serverAddress);
+    }
     NS_VERIFY_NOT_NULL(queryAddr, NS_ERROR);
 
     NSTask * discoverTask = NSMakeTask(TASK_CONSUMER_REQ_DISCOVER, (void *)queryAddr);