Index: src/trusted/debug_stub/transport_common.cc |
diff --git a/src/trusted/debug_stub/transport_common.cc b/src/trusted/debug_stub/transport_common.cc |
index d81612182cdd4de4854536aaeba65a41fbcb0100..32cb83191670b323901c126a5ad3015af98ca07b 100644 |
--- a/src/trusted/debug_stub/transport_common.cc |
+++ b/src/trusted/debug_stub/transport_common.cc |
@@ -22,9 +22,11 @@ |
using gdb_rsp::stringvec; |
using gdb_rsp::StringSplit; |
-namespace port { |
- |
+#if NACL_WINDOWS |
typedef int socklen_t; |
+#endif |
+ |
+namespace port { |
class Transport : public ITransport { |
public: |
@@ -423,4 +425,17 @@ ITransport *SocketBinding::AcceptConnection() { |
return NULL; |
} |
+uint16_t SocketBinding::GetBoundPort() { |
+ struct sockaddr_in saddr; |
+ struct sockaddr *psaddr = reinterpret_cast<struct sockaddr *>(&saddr); |
+ // Clearing sockaddr_in first appears to be necessary on Mac OS X. |
+ memset(&saddr, 0, sizeof(saddr)); |
+ socklen_t addrlen = static_cast<socklen_t>(sizeof(saddr)); |
+ if (::getsockname(socket_handle_, psaddr, &addrlen)) { |
+ NaClLog(LOG_ERROR, "Failed to retrieve bound address.\n"); |
+ return 0; |
+ } |
+ return ntohs(saddr.sin_port); |
+} |
+ |
} // namespace port |