diff options
-rw-r--r-- | native_client_sdk/src/libraries/nacl_io/socket/tcp_node.cc | 1 | ||||
-rw-r--r-- | native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/native_client_sdk/src/libraries/nacl_io/socket/tcp_node.cc b/native_client_sdk/src/libraries/nacl_io/socket/tcp_node.cc index 2066c71..445dfe7 100644 --- a/native_client_sdk/src/libraries/nacl_io/socket/tcp_node.cc +++ b/native_client_sdk/src/libraries/nacl_io/socket/tcp_node.cc @@ -455,6 +455,7 @@ Error TcpNode::Bind(const struct sockaddr* addr, socklen_t len) { return PPErrorToErrno(err); } + local_addr_ = TCPInterface()->GetLocalAddress(socket_resource_); return 0; } diff --git a/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc b/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc index b9e2adc..6f4dbe8 100644 --- a/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc +++ b/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc @@ -679,6 +679,16 @@ TEST_F(SocketTestTCP, Listen) { ASSERT_EQ(0, ki_close(new_socket)); } +TEST_F(SocketTestTCP, BindAndGetSockName) { + sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + + // Bind + ASSERT_EQ(0, Bind(sock1_, LOCAL_HOST, 0)); + EXPECT_EQ(0, ki_getsockname(sock1_, (struct sockaddr*)&addr, &addrlen)); + EXPECT_NE(0, addr.sin_port); +} + TEST_F(SocketTestTCP, ListenNonBlocking) { int server_sock = sock1_; |