This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag 1.5a
in repository iortcw.

commit db9b62bc8b4abd8f72eeb3ed85ea17e07574f957
Author: MAN-AT-ARMS <[email protected]>
Date:   Sun Jun 5 15:29:38 2016 -0400

    All: Always resolve IP of master when sending heartbeats
---
 MP/code/server/sv_main.c | 220 +++++++++++++++++++++++------------------------
 SP/code/server/sv_main.c | 103 +++++++++++-----------
 2 files changed, 159 insertions(+), 164 deletions(-)

diff --git a/MP/code/server/sv_main.c b/MP/code/server/sv_main.c
index 4538ac5..189d738 100644
--- a/MP/code/server/sv_main.c
+++ b/MP/code/server/sv_main.c
@@ -241,14 +241,14 @@ but not on every player enter or exit.
 ================
 */
 #define HEARTBEAT_MSEC  300 * 1000
-
 void SV_MasterHeartbeat(const char *message)
 {
-       static netadr_t adr[MAX_MASTER_SERVERS][2]; // [2] for v4 and v6 
address for the same address string.
-       int i;
-       int                     res;
-       int                     netenabled;
+       netadr_t        adr[2]; // [2] for v4 and v6 address for the same 
address string.
+       int             i;
+       int             res;
+       int             netenabled;
 
+       Com_Memset(adr, 0, sizeof(netadr_t) * 2);
        netenabled = Cvar_VariableIntegerValue("net_enabled");
 
        // DHM - Nerve :: Update Server doesn't send heartbeat
@@ -258,10 +258,10 @@ void SV_MasterHeartbeat(const char *message)
 
        // "dedicated 1" is for lan play, "dedicated 2" is for inet public play
        if (!com_dedicated || com_dedicated->integer != 2 || !(netenabled & 
(NET_ENABLEV4 | NET_ENABLEV6)))
-               return;     // only dedicated servers send heartbeats
+               return;         // only dedicated servers send heartbeats
 
        // if not time yet, don't send anything
-       if ( svs.time < svs.nextHeartbeatTime ) 
+       if ( svs.time < svs.nextHeartbeatTime )
                return;
 
        if ( !Q_stricmp( com_gamename->string, LEGACY_MASTER_GAMENAME ) )
@@ -270,72 +270,68 @@ void SV_MasterHeartbeat(const char *message)
        svs.nextHeartbeatTime = svs.time + HEARTBEAT_MSEC;
 
        // send to group masters
-       for ( i = 0 ; i < MAX_MASTER_SERVERS ; i++ ) {
-               if ( !sv_master[i]->string[0] ) {
+       for (i = 0; i < MAX_MASTER_SERVERS; i++)
+       {
+               if(!sv_master[i]->string[0])
                        continue;
-               }
 
-               // see if we haven't already resolved the name
-               // resolving usually causes hitches on win95, so only
-               // do it when needed
-               if(sv_master[i]->modified || (adr[i][0].type == NA_BAD && 
adr[i][1].type == NA_BAD))
+               // Enforce IP check everytime in case master moves to a new IP
+               sv_master[i]->modified = qfalse;
+
+               if(netenabled & NET_ENABLEV4)
                {
-                       sv_master[i]->modified = qfalse;
+                       Com_Printf("Resolving %s (IPv4)\n", 
sv_master[i]->string);
+                       res = NET_StringToAdr(sv_master[i]->string, &adr[0], 
NA_IP);
 
-                       if(netenabled & NET_ENABLEV4)
+                       if(res == 2)
                        {
-                               Com_Printf("Resolving %s (IPv4)\n", 
sv_master[i]->string);
-                               res = NET_StringToAdr(sv_master[i]->string, 
&adr[i][0], NA_IP);
-
-                               if(res == 2)
-                               {
-                                       // if no port was specified, use the 
default master port
-                                       adr[i][0].port = BigShort(PORT_MASTER);
-                               }
-                               
-                               if(res)
-                                       Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[i][0]));
-                               else
-                                       Com_Printf( "%s has no IPv4 
address.\n", sv_master[i]->string);
+                               // if no port was specified, use the default 
master port
+                               adr[0].port = BigShort(PORT_MASTER);
                        }
-                       
-                       if(netenabled & NET_ENABLEV6)
-                       {
-                               Com_Printf("Resolving %s (IPv6)\n", 
sv_master[i]->string);
-                               res = NET_StringToAdr(sv_master[i]->string, 
&adr[i][1], NA_IP6);
 
-                               if(res == 2)
-                               {
-                                       // if no port was specified, use the 
default master port
-                                       adr[i][1].port = BigShort(PORT_MASTER);
-                               }
-                               
-                               if(res)
-                                       Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[i][1]));
-                               else
-                                       Com_Printf( "%s has no IPv6 
address.\n", sv_master[i]->string);
-                       }
+                       if(res)
+                               Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[0]));
+                       else
+                               Com_Printf( "%s has no IPv4 address.\n", 
sv_master[i]->string);
+               }
+
+               if(netenabled & NET_ENABLEV6)
+               {
+                       Com_Printf("Resolving %s (IPv6)\n", 
sv_master[i]->string);
+                       res = NET_StringToAdr(sv_master[i]->string, &adr[1], 
NA_IP6);
 
-                       if(adr[i][0].type == NA_BAD && adr[i][1].type == NA_BAD)
+                       if(res == 2)
                        {
-                               // if the address failed to resolve, clear it
-                               // so we don't take repeated dns hits
-                               Com_Printf( "Couldn't resolve address: %s\n", 
sv_master[i]->string );
-                               Cvar_Set( sv_master[i]->name, "" );
-                               sv_master[i]->modified = qfalse;
-                               continue;
+                               // if no port was specified, use the default 
master port
+                               adr[1].port = BigShort(PORT_MASTER);
                        }
+
+                       if(res)
+                               Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[1]));
+                       else
+                               Com_Printf( "%s has no IPv6 address.\n", 
sv_master[i]->string);
+               }
+
+               if(adr[0].type == NA_BAD && adr[1].type == NA_BAD)
+               {
+                       // if the address failed to resolve, clear it
+                       // so we don't take repeated dns hits
+                       Com_Printf("Couldn't resolve address: %s\n", 
sv_master[i]->string);
+                       Cvar_Set(sv_master[i]->name, "");
+                       sv_master[i]->modified = qfalse;
+                       continue;
                }
 
 
-               Com_Printf( "Sending heartbeat to %s\n", sv_master[i]->string );
+               Com_Printf ("Sending heartbeat to %s\n", sv_master[i]->string );
+
                // this command should be changed if the server info / status 
format
                // ever incompatably changes
 
-               if(adr[i][0].type != NA_BAD)
-                       NET_OutOfBandPrint( NS_SERVER, adr[i][0], "heartbeat 
%s\n", message);
-               if(adr[i][1].type != NA_BAD)
-                       NET_OutOfBandPrint( NS_SERVER, adr[i][1], "heartbeat 
%s\n", message);
+               if(adr[0].type != NA_BAD)
+                       NET_OutOfBandPrint( NS_SERVER, adr[0], "heartbeat 
%s\n", message);
+               if(adr[1].type != NA_BAD)
+                       NET_OutOfBandPrint( NS_SERVER, adr[1], "heartbeat 
%s\n", message);
        }
 }
 
@@ -347,83 +343,85 @@ NERVE - SMF - Sends gameCompleteStatus messages to all 
master servers
 =================
 */
 void SV_MasterGameCompleteStatus() {
-       static netadr_t adr[MAX_MASTER_SERVERS][2]; // [2] for v4 and v6 
address for the same address string.
-       int i;
-       int                     res;
-       int                     netenabled;
+       netadr_t        adr[2]; // [2] for v4 and v6 address for the same 
address string.
+       int             i;
+       int             res;
+       int             netenabled;
 
+       Com_Memset(adr, 0, sizeof(netadr_t) * 2);
        netenabled = Cvar_VariableIntegerValue("net_enabled");
 
+       // DHM - Nerve :: Update Server doesn't send gameCompleteStatus 
+#ifdef UPDATE_SERVER
+       return;
+#endif
+
        // "dedicated 1" is for lan play, "dedicated 2" is for inet public play
        if (!com_dedicated || com_dedicated->integer != 2 || !(netenabled & 
(NET_ENABLEV4 | NET_ENABLEV6)))
-               return;     // only dedicated servers send master game status
+               return;         // only dedicated servers send heartbeats
 
        // send to group masters
-       for ( i = 0 ; i < MAX_MASTER_SERVERS ; i++ ) {
-               if ( !sv_master[i]->string[0] ) {
+       for (i = 0; i < MAX_MASTER_SERVERS; i++)
+       {
+               if(!sv_master[i]->string[0])
                        continue;
-               }
 
-               // see if we haven't already resolved the name
-               // resolving usually causes hitches on win95, so only
-               // do it when needed
-               if(sv_master[i]->modified || (adr[i][0].type == NA_BAD && 
adr[i][1].type == NA_BAD))
+               // Enforce IP check everytime in case master moves to a new IP
+               sv_master[i]->modified = qfalse;
+
+               if(netenabled & NET_ENABLEV4)
                {
-                       sv_master[i]->modified = qfalse;
+                       Com_Printf("Resolving %s (IPv4)\n", 
sv_master[i]->string);
+                       res = NET_StringToAdr(sv_master[i]->string, &adr[0], 
NA_IP);
 
-                       if(netenabled & NET_ENABLEV4)
+                       if(res == 2)
                        {
-                               Com_Printf("Resolving %s (IPv4)\n", 
sv_master[i]->string);
-                               res = NET_StringToAdr(sv_master[i]->string, 
&adr[i][0], NA_IP);
-
-                               if(res == 2)
-                               {
-                                       // if no port was specified, use the 
default master port
-                                       adr[i][0].port = BigShort(PORT_MASTER);
-                               }
-                               
-                               if(res)
-                                       Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[i][0]));
-                               else
-                                       Com_Printf( "%s has no IPv4 
address.\n", sv_master[i]->string);
+                               // if no port was specified, use the default 
master port
+                               adr[0].port = BigShort(PORT_MASTER);
                        }
-                       
-                       if(netenabled & NET_ENABLEV6)
-                       {
-                               Com_Printf("Resolving %s (IPv6)\n", 
sv_master[i]->string);
-                               res = NET_StringToAdr(sv_master[i]->string, 
&adr[i][1], NA_IP6);
 
-                               if(res == 2)
-                               {
-                                       // if no port was specified, use the 
default master port
-                                       adr[i][1].port = BigShort(PORT_MASTER);
-                               }
-                               
-                               if(res)
-                                       Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[i][1]));
-                               else
-                                       Com_Printf( "%s has no IPv6 
address.\n", sv_master[i]->string);
-                       }
+                       if(res)
+                               Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[0]));
+                       else
+                               Com_Printf( "%s has no IPv4 address.\n", 
sv_master[i]->string);
+               }
 
-                       if(adr[i][0].type == NA_BAD && adr[i][1].type == NA_BAD)
+               if(netenabled & NET_ENABLEV6)
+               {
+                       Com_Printf("Resolving %s (IPv6)\n", 
sv_master[i]->string);
+                       res = NET_StringToAdr(sv_master[i]->string, &adr[1], 
NA_IP6);
+
+                       if(res == 2)
                        {
-                               // if the address failed to resolve, clear it
-                               // so we don't take repeated dns hits
-                               Com_Printf( "Couldn't resolve address: %s\n", 
sv_master[i]->string );
-                               Cvar_Set( sv_master[i]->name, "" );
-                               sv_master[i]->modified = qfalse;
-                               continue;
+                               // if no port was specified, use the default 
master port
+                               adr[1].port = BigShort(PORT_MASTER);
                        }
+
+                       if(res)
+                               Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[1]));
+                       else
+                               Com_Printf( "%s has no IPv6 address.\n", 
sv_master[i]->string);
                }
 
+               if(adr[0].type == NA_BAD && adr[1].type == NA_BAD)
+               {
+                       // if the address failed to resolve, clear it
+                       // so we don't take repeated dns hits
+                       Com_Printf("Couldn't resolve address: %s\n", 
sv_master[i]->string);
+                       Cvar_Set(sv_master[i]->name, "");
+                       sv_master[i]->modified = qfalse;
+                       continue;
+               }
+
+
                Com_Printf( "Sending gameCompleteStatus to %s\n", 
sv_master[i]->string );
                // this command should be changed if the server info / status 
format
                // ever incompatably changes
 
-               if(adr[i][0].type != NA_BAD)
-                       SVC_GameCompleteStatus( adr[i][0] );
-               if(adr[i][1].type != NA_BAD)
-                       SVC_GameCompleteStatus( adr[i][1] );
+               if(adr[0].type != NA_BAD)
+                       SVC_GameCompleteStatus( adr[0] );
+               if(adr[1].type != NA_BAD)
+                       SVC_GameCompleteStatus( adr[1] );
        }
 }
 
diff --git a/SP/code/server/sv_main.c b/SP/code/server/sv_main.c
index 9ff522d..c478a54 100644
--- a/SP/code/server/sv_main.c
+++ b/SP/code/server/sv_main.c
@@ -253,16 +253,17 @@ but not on every player enter or exit.
 #define HEARTBEAT_MSEC  300 * 1000
 void SV_MasterHeartbeat(const char *message)
 {
-       static netadr_t adr[MAX_MASTER_SERVERS][2]; // [2] for v4 and v6 
address for the same address string.
-       int i;
-       int                     res;
-       int                     netenabled;
+       netadr_t        adr[2]; // [2] for v4 and v6 address for the same 
address string.
+       int             i;
+       int             res;
+       int             netenabled;
 
+       Com_Memset(adr, 0, sizeof(netadr_t) * 2);
        netenabled = Cvar_VariableIntegerValue("net_enabled");
 
        // "dedicated 1" is for lan play, "dedicated 2" is for inet public play
        if (!com_dedicated || com_dedicated->integer != 2 || !(netenabled & 
(NET_ENABLEV4 | NET_ENABLEV6)))
-               return;     // only dedicated servers send heartbeats
+               return;         // only dedicated servers send heartbeats
 
        // if not time yet, don't send anything
        if ( svs.time < svs.nextHeartbeatTime )
@@ -279,67 +280,63 @@ void SV_MasterHeartbeat(const char *message)
                if(!sv_master[i]->string[0])
                        continue;
 
-               // see if we haven't already resolved the name
-               // resolving usually causes hitches on win95, so only
-               // do it when needed
-               if(sv_master[i]->modified || (adr[i][0].type == NA_BAD && 
adr[i][1].type == NA_BAD))
+               // Enforce IP check everytime in case master moves to a new IP
+               sv_master[i]->modified = qfalse;
+
+               if(netenabled & NET_ENABLEV4)
                {
-                       sv_master[i]->modified = qfalse;
+                       Com_Printf("Resolving %s (IPv4)\n", 
sv_master[i]->string);
+                       res = NET_StringToAdr(sv_master[i]->string, &adr[0], 
NA_IP);
 
-                       if(netenabled & NET_ENABLEV4)
+                       if(res == 2)
                        {
-                               Com_Printf("Resolving %s (IPv4)\n", 
sv_master[i]->string);
-                               res = NET_StringToAdr(sv_master[i]->string, 
&adr[i][0], NA_IP);
-
-                               if(res == 2)
-                               {
-                                       // if no port was specified, use the 
default master port
-                                       adr[i][0].port = BigShort(PORT_MASTER);
-                               }
-                               
-                               if(res)
-                                       Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[i][0]));
-                               else
-                                       Com_Printf( "%s has no IPv4 
address.\n", sv_master[i]->string);
+                               // if no port was specified, use the default 
master port
+                               adr[0].port = BigShort(PORT_MASTER);
                        }
-                       
-                       if(netenabled & NET_ENABLEV6)
-                       {
-                               Com_Printf("Resolving %s (IPv6)\n", 
sv_master[i]->string);
-                               res = NET_StringToAdr(sv_master[i]->string, 
&adr[i][1], NA_IP6);
 
-                               if(res == 2)
-                               {
-                                       // if no port was specified, use the 
default master port
-                                       adr[i][1].port = BigShort(PORT_MASTER);
-                               }
-                               
-                               if(res)
-                                       Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[i][1]));
-                               else
-                                       Com_Printf( "%s has no IPv6 
address.\n", sv_master[i]->string);
-                       }
+                       if(res)
+                               Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[0]));
+                       else
+                               Com_Printf( "%s has no IPv4 address.\n", 
sv_master[i]->string);
+               }
 
-                       if(adr[i][0].type == NA_BAD && adr[i][1].type == NA_BAD)
-                       {
+               if(netenabled & NET_ENABLEV6)
+               {
+                       Com_Printf("Resolving %s (IPv6)\n", 
sv_master[i]->string);
+                       res = NET_StringToAdr(sv_master[i]->string, &adr[1], 
NA_IP6);
 
-                               // if the address failed to resolve, clear it
-                               // so we don't take repeated dns hits
-                               Com_Printf("Couldn't resolve address: %s\n", 
sv_master[i]->string);
-                               Cvar_Set(sv_master[i]->name, "");
-                               sv_master[i]->modified = qfalse;
-                               continue;
+                       if(res == 2)
+                       {
+                               // if no port was specified, use the default 
master port
+                               adr[1].port = BigShort(PORT_MASTER);
                        }
+
+                       if(res)
+                               Com_Printf( "%s resolved to %s\n", 
sv_master[i]->string, NET_AdrToStringwPort(adr[1]));
+                       else
+                               Com_Printf( "%s has no IPv6 address.\n", 
sv_master[i]->string);
                }
 
+               if(adr[0].type == NA_BAD && adr[1].type == NA_BAD)
+               {
+                       // if the address failed to resolve, clear it
+                       // so we don't take repeated dns hits
+                       Com_Printf("Couldn't resolve address: %s\n", 
sv_master[i]->string);
+                       Cvar_Set(sv_master[i]->name, "");
+                       sv_master[i]->modified = qfalse;
+                       continue;
+               }
+
+
+               Com_Printf ("Sending heartbeat to %s\n", sv_master[i]->string );
 
-               Com_Printf( "Sending heartbeat to %s\n", sv_master[i]->string );
                // this command should be changed if the server info / status 
format
                // ever incompatably changes
-               if(adr[i][0].type != NA_BAD)
-                       NET_OutOfBandPrint( NS_SERVER, adr[i][0], "heartbeat 
%s\n", message);
-               if(adr[i][1].type != NA_BAD)
-                       NET_OutOfBandPrint( NS_SERVER, adr[i][1], "heartbeat 
%s\n", message);
+
+               if(adr[0].type != NA_BAD)
+                       NET_OutOfBandPrint( NS_SERVER, adr[0], "heartbeat 
%s\n", message);
+               if(adr[1].type != NA_BAD)
+                       NET_OutOfBandPrint( NS_SERVER, adr[1], "heartbeat 
%s\n", message);
        }
 }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/iortcw.git

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to