[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