Index: native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc |
diff --git a/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc b/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc |
index 1d8ac375d88004d53f1f5b9ad38593e155949c09..f5c20c1b0a5092cb1d370db4f7415a16bb9b892f 100644 |
--- a/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc |
+++ b/native_client_sdk/src/libraries/nacl_io/mount_node_socket.cc |
@@ -462,12 +462,15 @@ Error MountNodeSocket::GetSockName(struct sockaddr* addr, socklen_t* len) { |
return EFAULT; |
AUTO_LOCK(node_lock_); |
- if (local_addr_ != 0) { |
- *len = ResourceToSockAddr(local_addr_, *len, addr); |
+ if (local_addr_ == 0) { |
+ // getsockname succeeds even if the socket is not bound. In this case, |
+ // just return address 0, port 0. |
+ memset(addr, 0, *len); |
return 0; |
} |
- return ENOTCONN; |
+ *len = ResourceToSockAddr(local_addr_, *len, addr); |
+ return 0; |
} |
} // namespace nacl_io |