[Common-dev] CR: bind to unspecified address fix

[Common-dev] CR: bind to unspecified address fix

Liam Murray liamm at real.com
Thu Aug 12 13:27:09 PDT 2004


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);
  




More information about the Common-dev mailing list
 

Site Map   |   Terms of Use   |   Privacy Policy   |   Contact Us

Copyright © 1995-2007 RealNetworks, Inc. All rights reserved. RealNetworks and Helix are trademarks of RealNetworks.
All other trademarks or registered trademarks are the property of their respective holders.