]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
try only one port on ip6 if ip4 succeeded, this is to reduce console
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 17 May 2009 21:23:12 +0000 (21:23 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Sun, 17 May 2009 21:23:12 +0000 (21:23 +0000)
spam

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@8974 d7cf8633-e32d-0410-b094-e92efae38249

netconn.c

index b124b4328533e1c62de912c55630a14f6067e199..c615dd63743b4f2a3a5ac6875f2fcdd27625adae 100755 (executable)
--- a/netconn.c
+++ b/netconn.c
@@ -873,14 +873,14 @@ void NetConn_CloseServerPorts(void)
                        LHNET_CloseSocket(sv_sockets[sv_numsockets - 1]);
 }
 
-void NetConn_OpenServerPort(const char *addressstring, int defaultport)
+qboolean NetConn_OpenServerPort(const char *addressstring, int defaultport, int range)
 {
        lhnetaddress_t address;
        lhnetsocket_t *s;
        int port;
        char addressstring2[1024];
 
-       for (port = defaultport; port <= defaultport + 100; port++)
+       for (port = defaultport; port <= defaultport + range; port++)
        {
                if (LHNETADDRESS_FromString(&address, addressstring, port))
                {
@@ -889,7 +889,7 @@ void NetConn_OpenServerPort(const char *addressstring, int defaultport)
                                sv_sockets[sv_numsockets++] = s;
                                LHNETADDRESS_ToString(LHNET_AddressFromSocket(s), addressstring2, sizeof(addressstring2), true);
                                Con_Printf("Server listening on address %s\n", addressstring2);
-                               break;
+                               return true;
                        }
                        else
                        {
@@ -901,9 +901,10 @@ void NetConn_OpenServerPort(const char *addressstring, int defaultport)
                {
                        Con_Printf("Server unable to parse address %s\n", addressstring);
                        // if it cant parse one address, it wont be able to parse another for sure
-                       break;
+                       return false;
                }
        }
+       return false;
 }
 
 void NetConn_OpenServerPorts(int opennetports)
@@ -918,11 +919,11 @@ void NetConn_OpenServerPorts(int opennetports)
        if (sv_netport.integer != port)
                Cvar_SetValueQuick(&sv_netport, port);
        if (cls.state != ca_dedicated)
-               NetConn_OpenServerPort("local:1", 0);
+               NetConn_OpenServerPort("local:1", 0, 1);
        if (opennetports)
        {
-               NetConn_OpenServerPort(net_address.string, port);
-               NetConn_OpenServerPort(net_address_ipv6.string, port);
+               qboolean ip4success = NetConn_OpenServerPort(net_address.string, port, 100);
+               NetConn_OpenServerPort(net_address_ipv6.string, port, ip4success ? 1 : 100);
        }
        if (sv_numsockets == 0)
                Host_Error("NetConn_OpenServerPorts: unable to open any ports!");