summaryrefslogtreecommitdiff
path: root/source/sv_main.c
diff options
context:
space:
mode:
authorAndrey Nazarov <skuller@skuller.net>2010-09-07 16:46:20 +0000
committerAndrey Nazarov <skuller@skuller.net>2010-09-07 16:46:20 +0000
commit8f76ac32949a283e000b27f6acd4359aa5de1806 (patch)
tree39c2088e732aed475e54680eec3ad13733994c26 /source/sv_main.c
parent9622b711c2b8e4641a778e144cf20ebfc87b12de (diff)
Re-resolve master servers after one day.
Don't spam server console with ping acks from masters. Added ‘listmasters’ command for checking IPs and ack times. Send the first heartbeat soon after server initialization.
Diffstat (limited to 'source/sv_main.c')
-rw-r--r--source/sv_main.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/source/sv_main.c b/source/sv_main.c
index 81d2d3f..35760d3 100644
--- a/source/sv_main.c
+++ b/source/sv_main.c
@@ -20,10 +20,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "sv_local.h"
-netadr_t master_adr[MAX_MASTERS]; // address of group servers
-
pmoveParams_t sv_pmp;
+LIST_DECL( sv_masterlist ); // address of group servers
LIST_DECL( sv_banlist );
LIST_DECL( sv_cmdlist_connect );
LIST_DECL( sv_cmdlist_begin );
@@ -377,15 +376,16 @@ SVC_Ack
================
*/
static void SVC_Ack( void ) {
- int i;
+ master_t *m;
- for( i = 0; i < MAX_MASTERS; i++ ) {
- if( !master_adr[i].port ) {
+ FOR_EACH_MASTER( m ) {
+ if( !m->adr.port ) {
continue;
}
- if( NET_IsEqualBaseAdr( &master_adr[i], &net_from ) ) {
- Com_Printf( "Ping acknowledge from %s\n",
+ if( NET_IsEqualBaseAdr( &m->adr, &net_from ) ) {
+ Com_DPrintf( "Ping acknowledge from %s\n",
NET_AdrToString( &net_from ) );
+ m->last_ack = svs.realtime;
break;
}
}
@@ -1493,7 +1493,7 @@ let it know we are alive, and log information
static void SV_MasterHeartbeat( void ) {
char buffer[MAX_PACKETLEN_DEFAULT];
size_t len;
- int i;
+ master_t *m;
if( !Com_IsDedicated() )
return; // only dedicated servers send heartbeats
@@ -1514,11 +1514,11 @@ static void SV_MasterHeartbeat( void ) {
len += SV_StatusString( buffer + len );
// send to group master
- for( i = 0; i < MAX_MASTERS; i++ ) {
- if( master_adr[i].port ) {
+ FOR_EACH_MASTER( m ) {
+ if( m->adr.port ) {
Com_DPrintf( "Sending heartbeat to %s\n",
- NET_AdrToString( &master_adr[i] ) );
- NET_SendPacket( NS_SERVER, &master_adr[i], len, buffer );
+ NET_AdrToString( &m->adr ) );
+ NET_SendPacket( NS_SERVER, &m->adr, len, buffer );
}
}
}
@@ -1531,7 +1531,7 @@ Informs all masters that this server is going down
=================
*/
static void SV_MasterShutdown( void ) {
- int i;
+ master_t *m;
if( !Com_IsDedicated() )
return; // only dedicated servers send heartbeats
@@ -1540,11 +1540,11 @@ static void SV_MasterShutdown( void ) {
return; // a private dedicated game
// send to group master
- for( i = 0; i < MAX_MASTERS; i++ ) {
- if( master_adr[i].port ) {
+ FOR_EACH_MASTER( m ) {
+ if( m->adr.port ) {
Com_DPrintf( "Sending shutdown to %s\n",
- NET_AdrToString( &master_adr[i] ) );
- OOB_PRINT( NS_SERVER, &master_adr[i], "shutdown" );
+ NET_AdrToString( &m->adr ) );
+ OOB_PRINT( NS_SERVER, &m->adr, "shutdown" );
}
}
}