Browse Source

fix local socket bind bug

woonhak 7 years ago
parent
commit
5966c2d2fe
1 changed files with 8 additions and 7 deletions
  1. 8 7
      LibOS/shim/src/sys/shim_socket.c

+ 8 - 7
LibOS/shim/src/sys/shim_socket.c

@@ -450,13 +450,14 @@ int shim_do_bind (int sockfd, struct sockaddr * addr, socklen_t addrlen)
         sock->addr.un.data = data;
         sock->addr.un.dentry = dent;
     }
-
-    if (addrlen != ((sock->domain == AF_INET) ? sizeof(struct sockaddr_in) :
-                    sizeof(struct sockaddr_in6)))
-            goto out;
-
-    inet_save_addr(sock->domain, &sock->addr.in.bind, addr);
-    inet_rebase_port(false, sock->domain, &sock->addr.in.bind, true);
+	else { /* AF_INET/INET6 case */
+		if (addrlen != ((sock->domain == AF_INET) ? sizeof(struct sockaddr_in) :
+					sizeof(struct sockaddr_in6)))
+			goto out;
+
+		inet_save_addr(sock->domain, &sock->addr.in.bind, addr);
+		inet_rebase_port(false, sock->domain, &sock->addr.in.bind, true);
+	}
 
     sock->sock_state = SOCK_BOUND;