Chromium Code Reviews| Index: src/trusted/debug_stub/nacl_debug.cc |
| diff --git a/src/trusted/debug_stub/nacl_debug.cc b/src/trusted/debug_stub/nacl_debug.cc |
| index 057d4bb6b622193a8f63aa0a82a341e817efbbd3..24073b3127ed680470a704df8f667a64b7abab31 100644 |
| --- a/src/trusted/debug_stub/nacl_debug.cc |
| +++ b/src/trusted/debug_stub/nacl_debug.cc |
| @@ -47,16 +47,20 @@ static SocketBinding *g_socket_binding = NULL; |
| int NaClDebugBindSocket() { |
| if (g_socket_binding == NULL) { |
| NaClDebugStubInit(); |
| - const char *addr = "127.0.0.1:4014"; |
| - g_socket_binding = SocketBinding::Bind(addr); |
| + // Try port 4014 first for compatibility. |
| + g_socket_binding = SocketBinding::Bind("127.0.0.1:4014"); |
| if (g_socket_binding == NULL) { |
| - NaClLog(LOG_ERROR, "NaClStubThread: Failed to bind TCP port '%s'\n", |
| - addr); |
| + g_socket_binding = SocketBinding::Bind("127.0.0.1:0"); |
| + } |
| + // If port 4014 is not available, try any port. |
|
Mark Seaborn
2014/03/26 23:17:35
This comment belongs before the previous if().
bradn
2014/04/01 18:31:20
Done.
|
| + if (g_socket_binding == NULL) { |
| + NaClLog(LOG_ERROR, |
| + "NaClDebugStubBindSocke: Failed to bind any TCP port\n"); |
|
Mark Seaborn
2014/03/26 23:17:35
"NaClDebugBindSocket". No "Stub", missing "t".
bradn
2014/04/01 18:31:20
Done.
|
| return 0; |
| } |
| NaClLog(LOG_WARNING, |
| - "nacl_debug(%d) : Connect GDB with 'target remote %s'.\n", |
| - __LINE__, addr); |
| + "nacl_debug(%d) : Connect GDB with 'target remote :%d\n", |
| + __LINE__, g_socket_binding->GetBoundPort()); |
| } |
| return 1; |
| } |
| @@ -69,9 +73,6 @@ void NaClDebugSetBoundSocket(NaClSocketHandle bound_socket) { |
| void WINAPI NaClStubThread(void *thread_arg) { |
| UNREFERENCED_PARAMETER(thread_arg); |
| - if (!NaClDebugBindSocket()) { |
| - return; |
| - } |
| while (1) { |
| // Wait for a connection. |
| nacl::scoped_ptr<ITransport> trans(g_socket_binding->AcceptConnection()); |
| @@ -127,6 +128,12 @@ int NaClDebugInit(struct NaClApp *nap) { |
| NaClThread *thread = new NaClThread; |
| CHECK(thread != NULL); |
| + if (!NaClDebugBindSocket()) { |
|
Mark Seaborn
2014/03/26 23:17:35
This belongs before "new NaClThread". "new NaClTh
bradn
2014/04/01 18:31:20
Done.
|
| + NaClLog(LOG_ERROR, "NaClDebugInit: Failed to bind debug socket\n"); |
|
Mark Seaborn
2014/03/26 23:17:35
NaClDebugBindSocket() already prints an error, so
bradn
2014/04/01 18:31:20
Done.
|
| + return 0; |
| + } |
| + nap->debug_stub_port = g_socket_binding->GetBoundPort(); |
| + |
| NaClLog(LOG_WARNING, "nacl_debug(%d) : Debugging started.\n", __LINE__); |
| CHECK(NaClThreadCtor(thread, NaClStubThread, NULL, NACL_KERN_STACK_SIZE)); |