diff --git a/source/src/server.cpp b/source/src/server.cpp index 66bb95af..57c852c7 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -3399,8 +3399,6 @@ void linequalitystats(int elapsed) } } -bool msreg = true; - void serverslice(uint timeout) // main server update, called from cube main loop in sp, or dedicated server loop { static int msend = 0, mrec = 0, csend = 0, crec = 0, mnum = 0, cnum = 0; @@ -3460,7 +3458,6 @@ void serverslice(uint timeout) // main server update, called from cube main lo loggamestatus("game finished"); if(demorecord) enddemorecord(); interm = nextsendscore = 0; - msreg = true; //start next game if(nextmapname[0]) startgame(nextmapname, nextgamemode); @@ -3472,7 +3469,7 @@ void serverslice(uint timeout) // main server update, called from cube main lo if(!isdedicated) return; // below is network only - if (msreg || !totalclients) serverms(smode, numclients(), minremain, smapname, servmillis, serverhost->address, &mnum, &msend, &mrec, &cnum, &csend, &crec, SERVER_PROTOCOL_VERSION); + serverms(smode, numclients(), minremain, smapname, servmillis, serverhost->address, &mnum, &msend, &mrec, &cnum, &csend, &crec, SERVER_PROTOCOL_VERSION); if(autoteam && m_teammode && !m_arena && !interm && servmillis - lastfillup > 5000 && refillteams()) lastfillup = servmillis; diff --git a/source/src/serverms.cpp b/source/src/serverms.cpp index 2e329e98..789024d5 100644 --- a/source/src/serverms.cpp +++ b/source/src/serverms.cpp @@ -162,11 +162,12 @@ void flushmasterinput() } extern char *global_name; +extern int interm -// send alive signal to masterserver every hour of uptime +// send alive signal to masterserver after 40 minutes of uptime and during an intermission (so theoretically <= 1 hour) - after 1 hour at the latest. static inline void updatemasterserver(int millis, int port) { - if(!lastupdatemaster || millis-lastupdatemaster>40*60*1000) + if(!lastupdatemaster || (millis-lastupdatemaster>40*60*1000 && interm) || millis-lastupdatemaster>60*60*1000) { char servername[30]; memset(servername,'\0',30); filtertext(servername,global_name,-1,20); if(mastername[0]) requestmasterf("regserv %d %s %d\n", port, servername[0] ? servername : "noname", AC_VERSION);