[Lldb-commits] [lldb] r135790 - in /lldb/trunk: include/lldb/Host/SocketAddress.h source/Core/ConnectionFileDescriptor.cpp source/Host/common/SocketAddress.cpp

Peter Collingbourne peter at pcc.me.uk
Fri Jul 22 12:12:43 PDT 2011


Author: pcc
Date: Fri Jul 22 14:12:42 2011
New Revision: 135790

URL: http://llvm.org/viewvc/llvm-project?rev=135790&view=rev
Log:
Add support for platforms without sa_len to SocketAddress, and modify
some code to use it

Modified:
    lldb/trunk/include/lldb/Host/SocketAddress.h
    lldb/trunk/source/Core/ConnectionFileDescriptor.cpp
    lldb/trunk/source/Host/common/SocketAddress.cpp

Modified: lldb/trunk/include/lldb/Host/SocketAddress.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/SocketAddress.h?rev=135790&r1=135789&r2=135790&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Host/SocketAddress.h (original)
+++ lldb/trunk/include/lldb/Host/SocketAddress.h Fri Jul 22 14:12:42 2011
@@ -76,13 +76,6 @@
     GetMaxLength ();
 
     //------------------------------------------------------------------
-    // Set the length manually if supported in the socket address 
-    // structures
-    //------------------------------------------------------------------
-    void
-    SetLength (socklen_t len);
-    
-    //------------------------------------------------------------------
     // Get the socket address family 
     //------------------------------------------------------------------
     sa_family_t

Modified: lldb/trunk/source/Core/ConnectionFileDescriptor.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ConnectionFileDescriptor.cpp?rev=135790&r1=135789&r2=135790&view=diff
==============================================================================
--- lldb/trunk/source/Core/ConnectionFileDescriptor.cpp (original)
+++ lldb/trunk/source/Core/ConnectionFileDescriptor.cpp Fri Jul 22 14:12:42 2011
@@ -842,14 +842,10 @@
     else
     {
         // Socket was created, now lets bind to the requested port
-        struct sockaddr_in sin;
-        ::memset (&sin, 0, sizeof(sin));
-        sin.sin_len = sizeof(sin);
-        sin.sin_family = AF_INET;
-        sin.sin_port = 0;
-        sin.sin_addr.s_addr = htonl (INADDR_ANY);
+        SocketAddress addr;
+        addr.SetToLocalhost (AF_INET, 0);
 
-        if (::bind (m_fd_recv, (struct sockaddr *)&sin, sizeof(sin)) == -1)
+        if (::bind (m_fd_recv, addr, addr.GetLength()) == -1)
         {
             // Bind failed...
             if (error_ptr)

Modified: lldb/trunk/source/Host/common/SocketAddress.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/SocketAddress.cpp?rev=135790&r1=135789&r2=135790&view=diff
==============================================================================
--- lldb/trunk/source/Host/common/SocketAddress.cpp (original)
+++ lldb/trunk/source/Host/common/SocketAddress.cpp Fri Jul 22 14:12:42 2011
@@ -11,6 +11,7 @@
 #include <stddef.h>
 
 // C Includes
+#include <assert.h>
 #include <string.h>
 
 // C++ Includes
@@ -77,10 +78,25 @@
     return GetLength () != 0;
 }
 
+static socklen_t 
+GetFamilyLength (sa_family_t family)
+{
+    switch (family)
+    {
+        case AF_INET:  return sizeof(struct sockaddr_in);
+        case AF_INET6: return sizeof(struct sockaddr_in6);
+    }
+    assert(0 && "Unsupported address family");
+}
+
 socklen_t
 SocketAddress::GetLength () const
 {
+#if defined(__APPLE__)
     return m_socket_addr.sa.sa_len;
+#else
+    return GetFamilyLength (GetFamily());
+#endif
 }
 
 socklen_t
@@ -89,12 +105,6 @@
     return sizeof (sockaddr_t);
 }
 
-void
-SocketAddress::SetLength (socklen_t len)
-{
-    m_socket_addr.sa.sa_len = len;
-}
-
 sa_family_t
 SocketAddress::GetFamily () const
 {
@@ -105,6 +115,9 @@
 SocketAddress::SetFamily (sa_family_t family)
 {
     m_socket_addr.sa.sa_family = family;
+#if defined(__APPLE__)
+    m_socket_addr.sa.sa_len = GetFamilyLength (family);
+#endif
 }
 
 in_port_t
@@ -228,7 +241,6 @@
             if (SetPort (port))
             {
                 m_socket_addr.sa_ipv4.sin_addr.s_addr = htonl (INADDR_ANY);
-                SetLength (sizeof(m_socket_addr.sa_ipv4));
                 return true;
             }
             break;
@@ -238,7 +250,6 @@
             if (SetPort (port))
             {
                 m_socket_addr.sa_ipv6.sin6_addr = in6addr_any;
-                SetLength (sizeof(m_socket_addr.sa_ipv6));
                 return true;
             }            
             break;





More information about the lldb-commits mailing list