[Common-dev] CR: bind to unspecified address fix
Liam Murray liamm at real.com
Summary:
Fix for breaks introduced with recent changes.
Details:
1) added missing ctor initializer.
2) hx_map6to4 doesn't fail if unspecified ipv6 address passed in.
Branch:
Head
Builds/platforms tested:
Win client
Liam
Index: platform/posix/netdrv.cpp
===================================================================
RCS file: /cvsroot/common/netio/platform/posix/netdrv.cpp,v
retrieving revision 1.28
diff -u -w -r1.28 netdrv.cpp
--- platform/posix/netdrv.cpp 11 Aug 2004 22:40:54 -0000 1.28
+++ platform/posix/netdrv.cpp 12 Aug 2004 20:23:14 -0000
@@ -589,7 +589,7 @@
}
void
-hx_map4to6(sockaddr* psa, sockaddr_in6* psa6)
+hx_map4to6(const sockaddr* psa, sockaddr_in6* psa6)
{
sockaddr_in* psa4 = (sockaddr_in*)psa;
memset(psa6, 0, sizeof(sockaddr_in6));
@@ -601,17 +601,18 @@
}
int
-hx_map6to4(sockaddr* psa, sockaddr_in* psa4)
+hx_map6to4(const sockaddr* psa, sockaddr_in* psa4)
{
sockaddr_in6* psa6 = (sockaddr_in6*)psa;
memset(psa4, 0, sizeof(sockaddr_in));
- if (IN6_IS_ADDR_V4MAPPED(&psa6->sin6_addr))
+ if (IN6_IS_ADDR_V4MAPPED(&psa6->sin6_addr) ||
IN6_IS_ADDR_UNSPECIFIED(&psa6->sin6_addr))
{
psa4->sin_family = AF_INET;
psa4->sin_port = psa6->sin6_port;
memcpy(&psa4->sin_addr.s_addr, &psa6->sin6_addr.s6_addr[12], 4);
return 0;
}
+ HX_ASSERT(false);
return 1;
}
Index: platform/posix/sockimp.cpp
===================================================================
RCS file: /cvsroot/common/netio/platform/posix/sockimp.cpp,v
retrieving revision 1.39
diff -u -w -r1.39 sockimp.cpp
--- platform/posix/sockimp.cpp 11 Aug 2004 22:45:52 -0000 1.39
+++ platform/posix/sockimp.cpp 12 Aug 2004 20:23:15 -0000
@@ -1081,6 +1081,7 @@
m_type(t),
m_proto(p),
m_bufType(HX_SOCKBUF_DEFAULT),
+ m_readBufAlloc(HX_SOCK_READBUF_SIZE_DEFAULT),
m_sock(sock),
#if defined(MISSING_DUALSOCKET)
m_pSock4(NULL),
Index: pub/platform/posix/netdrv.h
===================================================================
RCS file: /cvsroot/common/netio/pub/platform/posix/netdrv.h,v
retrieving revision 1.15
diff -u -w -r1.15 netdrv.h
--- pub/platform/posix/netdrv.h 11 Aug 2004 22:41:46 -0000 1.15
+++ pub/platform/posix/netdrv.h 12 Aug 2004 20:23:15 -0000
@@ -47,8 +47,8 @@
UINT32 hx_ntohl(UINT32 n);
UINT16 hx_ntohs(UINT16 n);
-void hx_map4to6(sockaddr* psa, sockaddr_in6* psa6);
-int hx_map6to4(sockaddr* psa, sockaddr_in* psa4);
+void hx_map4to6(const sockaddr* psa, sockaddr_in6* psa6);
+int hx_map6to4(const sockaddr* psa, sockaddr_in* psa4);
BOOL hx_maskaddr4(struct in_addr* paddr, UINT32 bits);
BOOL hx_maskaddr6(struct in6_addr* paddr, UINT32 bits);