Fix wrong return value from OCInitUDP API
authorSachin Agrawal <sachin.agrawal@intel.com>
Tue, 4 Nov 2014 22:37:19 +0000 (14:37 -0800)
committerSachin Agrawal <sachin.agrawal@intel.com>
Tue, 4 Nov 2014 22:37:19 +0000 (14:37 -0800)
Call to setsocketopt method was hiding the return value from bind
method call (in case bind API fails). Modified code to use the
return value from bind call for API return value.

Change-Id: I7ab39b22444ba5db8a0b25524d4e5f9791c5ccf8
Signed-off-by: Sachin Agrawal <sachin.agrawal@intel.com>
csdk/ocsocket/src/ocsocket.c

index 68519fe3030a0306e67d14371474896173fa5d2a..5fce889c37fa360131359ae8266bf95d23864de6 100644 (file)
@@ -189,24 +189,24 @@ int32_t OCInitUDP(OCDevAddr* ipAddr, int32_t *sockfd)
         goto exit;
     }
 
-    if ((ret = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char*) &set_option_on,
-                sizeof(set_option_on))) < 0) {
-        OC_LOG(FATAL, MOD_NAME, "setsockopt API failed");
+    if (ret = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char*) &set_option_on,
+                sizeof(set_option_on)) < 0) {
+        OC_LOG_V(FATAL, MOD_NAME, "setsockopt API failed with errno %s",
+                strerror(errno));
         goto exit;
     }
 
-    if (bind(sfd, (struct sockaddr*)ipAddr->addr, ipAddr->size) < 0) {
+    if (ret = bind(sfd, (struct sockaddr*)ipAddr->addr, ipAddr->size) < 0) {
         OC_LOG_V(FATAL, MOD_NAME, "bind API failed with errno %s", strerror(errno));
         goto exit;
     }
 
+    *sockfd = sfd;
     ret = ERR_SUCCESS;
 
 exit:
     if ((ret != ERR_SUCCESS) && (sfd >= 0)) {
         close(sfd);
-    } else {
-        *sockfd = sfd;
     }
 
     OC_LOG_V(DEBUG, MOD_NAME, "%s End", __func__ );