]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
Thanks to faded (of the tenebrae team) for provoking me to recite a lengthy explanati...
authorhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 28 Mar 2003 13:27:15 +0000 (13:27 +0000)
committerhavoc <havoc@d7cf8633-e32d-0410-b094-e92efae38249>
Fri, 28 Mar 2003 13:27:15 +0000 (13:27 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@2870 d7cf8633-e32d-0410-b094-e92efae38249

net_dgrm.c

index b71f7f2a719d21ae612d8f4c592646edbcec38fd..fde128c09101ce3f3ffd74fa7c208c5bb6441780 100644 (file)
@@ -1015,7 +1015,12 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
                                dfunc.GetSocketAddr(s->socket, &newaddr);
                                MSG_WriteLong(&net_message, dfunc.GetSocketPort(&newaddr));
                                *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK));
-                               dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr);
+                               // LordHavoc: send from s->socket instead of acceptsock, this
+                               // way routers usually identify the connection correctly
+                               // (thanks to faded for provoking me to recite a lengthy
+                               // explanation of NAT nightmares, and realize this easy
+                               // workaround for quake)
+                               dfunc.Write (s->socket, net_message.data, net_message.cursize, &clientaddr);
                                SZ_Clear(&net_message);
                                return NULL;
                        }
@@ -1072,7 +1077,11 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
        dfunc.GetSocketAddr(newsock, &newaddr);
        MSG_WriteLong(&net_message, dfunc.GetSocketPort(&newaddr));
        *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK));
-       dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr);
+       // LordHavoc: send from sock->socket instead of acceptsock, this way routers
+       // usually identify the connection correctly (thanks to faded for provoking
+       // me to recite a lengthy explanation of NAT nightmares, and realize this
+       // easy workaround for quake)
+       dfunc.Write (sock->socket, net_message.data, net_message.cursize, &clientaddr);
        SZ_Clear(&net_message);
 
        return sock;