]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - lhnet.c
renamed prvm_startupreuseedicttime to prvm_reuseedicts_startuptime
[xonotic/darkplaces.git] / lhnet.c
diff --git a/lhnet.c b/lhnet.c
index fd668b7ee6d83ac59c55bdb8d4f3e1838dd5de60..7da46a74ecf2a799aa3ad99078cf8a0710308f81 100644 (file)
--- a/lhnet.c
+++ b/lhnet.c
@@ -1,6 +1,14 @@
 
 // Written by Forest Hale 2003-06-15 and placed into public domain.
 
+#ifdef WIN32
+// Windows XP or higher is required for getaddrinfo, but the inclusion of wspiapi provides fallbacks for older versions
+#define _WIN32_WINNT 0x0501
+#include <winsock2.h>
+#include <ws2tcpip.h>
+//#include <wspiapi.h>
+#endif
+
 #ifndef STANDALONETEST
 #include "quakedef.h"
 #endif
@@ -9,12 +17,7 @@
 #include <stdio.h>
 #include <time.h>
 #include <string.h>
-#ifdef WIN32
-#define _WIN32_WINNT 0x0501
-       // Windows XP or higher is required for getaddrinfo
-#include <winsock2.h>
-#include <ws2tcpip.h>
-#else
+#ifndef WIN32
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/socket.h>
@@ -148,7 +151,10 @@ int LHNETADDRESS_Resolve(lhnetaddressnative_t *address, const char *name, int po
        if (err != 0 || addrinf == NULL)
                return 0;
        if (addrinf->ai_addr->sa_family != AF_INET6 && addrinf->ai_addr->sa_family != AF_INET)
+       {
+               freeaddrinfo (addrinf);
                return 0;
+       }
 
        // great it worked
        if (addrinf->ai_addr->sa_family == AF_INET6)
@@ -722,7 +728,7 @@ lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address)
                                                int ipv6_only = 1;
                                                if (address->addresstype != LHNETADDRESSTYPE_INET6
                                                        || setsockopt (lhnetsocket->inetsocket, IPPROTO_IPV6, IPV6_V6ONLY,
-                                                                                  (const void *)&ipv6_only, sizeof(ipv6_only)) == 0
+                                                                                  (const char *)&ipv6_only, sizeof(ipv6_only)) == 0
 #ifdef WIN32
                                                        // The Win32 API only supports IPV6_V6ONLY since Windows Vista, but fortunately
                                                        // the default value is what we want on Win32 anyway (IPV6_V6ONLY = true)
@@ -869,10 +875,10 @@ int LHNET_Read(lhnetsocket_t *lhnetsocket, void *content, int maxcontentlength,
        }
        else if (lhnetsocket->address.addresstype == LHNETADDRESSTYPE_INET4)
        {
-               unsigned int inetaddresslength;
+               SOCKLEN_T inetaddresslength;
                address->addresstype = LHNETADDRESSTYPE_NONE;
                inetaddresslength = sizeof(address->addr.in);
-               value = recvfrom(lhnetsocket->inetsocket, content, maxcontentlength, 0, &address->addr.sock, &inetaddresslength);
+               value = recvfrom(lhnetsocket->inetsocket, (char *)content, maxcontentlength, 0, &address->addr.sock, &inetaddresslength);
                if (value > 0)
                {
                        address->addresstype = LHNETADDRESSTYPE_INET4;
@@ -895,10 +901,10 @@ int LHNET_Read(lhnetsocket_t *lhnetsocket, void *content, int maxcontentlength,
        }
        else if (lhnetsocket->address.addresstype == LHNETADDRESSTYPE_INET6)
        {
-               unsigned int inetaddresslength;
+               SOCKLEN_T inetaddresslength;
                address->addresstype = LHNETADDRESSTYPE_NONE;
                inetaddresslength = sizeof(address->addr.in6);
-               value = recvfrom(lhnetsocket->inetsocket, content, maxcontentlength, 0, &address->addr.sock, &inetaddresslength);
+               value = recvfrom(lhnetsocket->inetsocket, (char *)content, maxcontentlength, 0, &address->addr.sock, &inetaddresslength);
                if (value > 0)
                {
                        address->addresstype = LHNETADDRESSTYPE_INET6;
@@ -951,7 +957,7 @@ int LHNET_Write(lhnetsocket_t *lhnetsocket, const void *content, int contentleng
        }
        else if (lhnetsocket->address.addresstype == LHNETADDRESSTYPE_INET4)
        {
-               value = sendto(lhnetsocket->inetsocket, content, contentlength, 0, (struct sockaddr *)&address->addr.in, sizeof(struct sockaddr_in));
+               value = sendto(lhnetsocket->inetsocket, (char *)content, contentlength, 0, (struct sockaddr *)&address->addr.in, sizeof(struct sockaddr_in));
                if (value == -1)
                {
                        if (SOCKETERRNO == EWOULDBLOCK)
@@ -961,7 +967,7 @@ int LHNET_Write(lhnetsocket_t *lhnetsocket, const void *content, int contentleng
        }
        else if (lhnetsocket->address.addresstype == LHNETADDRESSTYPE_INET6)
        {
-               value = sendto(lhnetsocket->inetsocket, content, contentlength, 0, (struct sockaddr *)&address->addr.in6, sizeof(struct sockaddr_in6));
+               value = sendto(lhnetsocket->inetsocket, (char *)content, contentlength, 0, (struct sockaddr *)&address->addr.in6, sizeof(struct sockaddr_in6));
                if (value == -1)
                {
                        if (SOCKETERRNO == EWOULDBLOCK)