Fix IOT-605: fridgeclient executable's abnormal termination
authorsonu1.yadav <sonu1.yadav@samsung.com>
Tue, 14 Jul 2015 09:09:57 +0000 (14:39 +0530)
committerErich Keane <erich.keane@intel.com>
Tue, 14 Jul 2015 15:18:38 +0000 (15:18 +0000)
Change-Id: Idcfcd4296d76742859e10b44f36f3ca56ce76ca0
Signed-off-by: sonu1.yadav <sonu1.yadav@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1644
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Erich Keane <erich.keane@intel.com>
resource/src/OCResource.cpp

index e1188a2..1d35ea2 100644 (file)
@@ -130,11 +130,12 @@ void OCResource::setHost(const std::string& host)
             throw ResourceInitException(m_uri.empty(), m_resourceTypes.empty(),
                 m_interfaces.empty(), m_clientWrapper.expired(), false, false);
         }
-
-        std::string ip6Addr = host_token.substr(0, found);
+        // extract the ipaddress
+        std::string ip6Addr = host_token.substr(1, found-1);
         ip6Addr.copy(m_devAddr.addr, sizeof(m_devAddr.addr));
         m_devAddr.addr[ip6Addr.length()] = '\0';
-        host_token = host_token.substr(found + 1);
+        //skip ']' and ':' characters in host string
+        host_token = host_token.substr(found + 2);
     }
     else
     {
@@ -149,11 +150,11 @@ void OCResource::setHost(const std::string& host)
         std::string addrPart = host_token.substr(0, found);
         addrPart.copy(m_devAddr.addr, sizeof(m_devAddr.addr));
         m_devAddr.addr[addrPart.length()] = '\0';
-
+        //skip ':' character in host string
         host_token = host_token.substr(found + 1);
     }
 
-    int port = stoi(host_token);
+    int port = std::stoi(host_token);
 
     if( port < 0 || port > UINT16_MAX )
     {