Some IPv6 fixes for WinXP dev-2
authorpatthoyts <patthoyts>
Tue, 24 Feb 2004 16:23:41 +0000 (16:23 +0000)
committerpatthoyts <patthoyts>
Tue, 24 Feb 2004 16:23:41 +0000 (16:23 +0000)
generic/udp_tcl.c
generic/udp_tcl.h

index c7cb0b10562f158b84563988171c6859f9a286d5..a54a26821c5f8a6e5ce7a413c04866e64aceea9f 100644 (file)
@@ -403,9 +403,10 @@ UdpGetAddressFromObj(
             }
 #else
 #error "No IPv6 address conversion function."
-#endif
            addr->sin6_family = AF_INET6;
            addr->sin6_port = port;
+#endif
+
 #endif /* SIPC_IPV6 */
         } else {
 
@@ -469,7 +470,7 @@ UdpGetObjFromAddress(
        parts[1] = Tcl_NewIntObj(addr->sin6_port);
 #else
        Tcl_SetObjResult(interp, 
-               Tcl_NewStringObj("error: ipv6 not supported in this build"));
+               Tcl_NewStringObj("error: ipv6 not supported in this build", -1));
        return TCL_ERROR;
 #endif 
     } else {
@@ -550,7 +551,7 @@ Tcl_MakeUdpChannel(SOCKET sock)
     statePtr->sock = sock;
 
     getsockname(sock, (struct sockaddr *)&name, &len);
-    if (name.ss_family == AF_INET) {
+    if (((struct sockaddr *)&name)->sa_family == AF_INET) {
        ((struct sockaddr_in *)&statePtr->saddr_local)->sin_addr.s_addr 
            = INADDR_NONE;
         ((struct sockaddr_in *)&statePtr->saddr_remote)->sin_addr.s_addr 
index 8bb86911925c1fc3242d0f51934e4e3ae6c96910..bd3deb7cda99ad22527fbf76d7bf07ef03e0a53c 100644 (file)
 #endif
 
 #if defined(_WIN32) && !defined(WIN32)
-#define WIN32
+#  define WIN32
+#  if WINVER > 0x0500
+#    define SIPC_IPV6 1
+#    define HAVE_GETADDRINFO 1
+#  endif
 #endif
 
 #ifdef WIN32