[Lldb-commits] [lldb] r233652 - Increate backlog of lldb-platform's listener socket

Vince Harron vince at nethacker.com
Mon Mar 30 17:27:10 PDT 2015


Author: vharron
Date: Mon Mar 30 19:27:10 2015
New Revision: 233652

URL: http://llvm.org/viewvc/llvm-project?rev=233652&view=rev
Log:
Increate backlog of lldb-platform's listener socket

lldb-platform's listener socket only had a backlog of one connection.
That means that if more than one client connected simultaneously, the
connection would be refused. The test suite can be run remotely with
dozens of threads connecting simultaneously. Raised this limit to 100
to effectively eliminate lost connections.

Test Plan:
run tests against a remote target

Differential Revision: http://reviews.llvm.org/D8696


Modified:
    lldb/trunk/include/lldb/Host/Socket.h
    lldb/trunk/source/Host/common/Socket.cpp
    lldb/trunk/tools/lldb-server/lldb-platform.cpp

Modified: lldb/trunk/include/lldb/Host/Socket.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Socket.h?rev=233652&r1=233651&r2=233652&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/Socket.h (original)
+++ lldb/trunk/include/lldb/Host/Socket.h Mon Mar 30 19:27:10 2015
@@ -56,7 +56,12 @@ public:
     // Initialize a Tcp Socket object in listening mode.  listen and accept are implemented
     // separately because the caller may wish to manipulate or query the socket after it is
     // initialized, but before entering a blocking accept.
-    static Error TcpListen(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket, Predicate<uint16_t>* predicate);
+    static Error TcpListen(
+        llvm::StringRef host_and_port,
+        bool child_processes_inherit,
+        Socket *&socket,
+        Predicate<uint16_t>* predicate,
+        int backlog = 5);
     static Error TcpConnect(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket);
     static Error UdpConnect(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&send_socket, Socket *&recv_socket);
     static Error UnixDomainConnect(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket);

Modified: lldb/trunk/source/Host/common/Socket.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/Socket.cpp?rev=233652&r1=233651&r2=233652&view=diff
==============================================================================
--- lldb/trunk/source/Host/common/Socket.cpp (original)
+++ lldb/trunk/source/Host/common/Socket.cpp Mon Mar 30 19:27:10 2015
@@ -167,7 +167,12 @@ Error Socket::TcpConnect(llvm::StringRef
     return error;
 }
 
-Error Socket::TcpListen(llvm::StringRef host_and_port, bool child_processes_inherit, Socket *&socket, Predicate<uint16_t>* predicate)
+Error Socket::TcpListen(
+    llvm::StringRef host_and_port,
+    bool child_processes_inherit,
+    Socket *&socket,
+    Predicate<uint16_t>* predicate,
+    int backlog)
 {
     std::unique_ptr<Socket> listen_socket;
     NativeSocket listen_sock = kInvalidSocketValue;
@@ -209,7 +214,7 @@ Error Socket::TcpListen(llvm::StringRef
             return error;
         }
 
-        err = ::listen (listen_sock, 1);
+        err = ::listen (listen_sock, backlog);
         if (err == -1)
         {
             // TODO: On Windows, use WSAGetLastError()

Modified: lldb/trunk/tools/lldb-server/lldb-platform.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/tools/lldb-server/lldb-platform.cpp?rev=233652&r1=233651&r2=233652&view=diff
==============================================================================
--- lldb/trunk/tools/lldb-server/lldb-platform.cpp (original)
+++ lldb/trunk/tools/lldb-server/lldb-platform.cpp Mon Mar 30 19:27:10 2015
@@ -253,7 +253,12 @@ main_platform (int argc, char *argv[])
     Socket *socket = nullptr;
     printf ("Listening for a connection from %s...\n", listen_host_port.c_str());
     const bool children_inherit_listen_socket = false;
-    error = Socket::TcpListen(listen_host_port.c_str(), children_inherit_listen_socket, socket, NULL);
+
+    // the test suite makes many connections in parallel, let's not miss any.
+    // The highest this should get reasonably is a function of the number 
+    // of target CPUs.  For now, let's just use 100
+    const int backlog = 100;
+    error = Socket::TcpListen(listen_host_port.c_str(), children_inherit_listen_socket, socket, NULL, backlog);
     if (error.Fail())
     {
         printf("error: %s\n", error.AsCString());





More information about the lldb-commits mailing list