X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=net_main.c;h=a7137ab3aea7ea599f1d95bc026904033b6b872e;hb=00322258fc19f151087caff9cacef0d7589f7fb4;hp=39b57cca238ffa7b24afd6ba494254796679222a;hpb=23bc50c038a78e63f8686b9da4a814a5116d8c3f;p=xonotic%2Fdarkplaces.git diff --git a/net_main.c b/net_main.c index 39b57cca..a7137ab3 100644 --- a/net_main.c +++ b/net_main.c @@ -8,7 +8,7 @@ of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -21,9 +21,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "quakedef.h" -qsocket_t *net_activeSockets = NULL; -qsocket_t *net_freeSockets = NULL; -int net_numsockets = 0; +qsocket_t *net_activeSockets = NULL; +mempool_t *net_mempool; qboolean ipxAvailable = false; qboolean tcpipAvailable = false; @@ -56,8 +55,8 @@ int messagesReceived = 0; int unreliableMessagesSent = 0; int unreliableMessagesReceived = 0; -cvar_t net_messagetimeout = {"net_messagetimeout","300"}; -cvar_t hostname = {"hostname", "UNNAMED"}; +cvar_t net_messagetimeout = {0, "net_messagetimeout","300"}; +cvar_t hostname = {CVAR_SAVE, "hostname", "UNNAMED"}; qboolean configRestored = false; @@ -72,7 +71,7 @@ double net_time; double SetNetTime(void) { - net_time = Sys_FloatTime(); + net_time = Sys_DoubleTime(); return net_time; } @@ -89,15 +88,10 @@ qsocket_t *NET_NewQSocket (void) { qsocket_t *sock; - if (net_freeSockets == NULL) - return NULL; - if (net_activeconnections >= svs.maxclients) return NULL; - // get one from free list - sock = net_freeSockets; - net_freeSockets = sock->next; + sock = Mem_Alloc(net_mempool, sizeof(qsocket_t)); // add it to active list sock->next = net_activeSockets; @@ -143,10 +137,7 @@ void NET_FreeQSocket(qsocket_t *sock) Sys_Error ("NET_FreeQSocket: not active\n"); } - // add it to free list - sock->next = net_freeSockets; - net_freeSockets = sock; - sock->disconnected = true; + Mem_Free(sock); } @@ -171,7 +162,7 @@ static void NET_Listen_f (void) static void MaxPlayers_f (void) { - int n; + int n; if (Cmd_Argc () != 2) { @@ -186,13 +177,9 @@ static void MaxPlayers_f (void) } n = atoi(Cmd_Argv(1)); - if (n < 1) - n = 1; - if (n > svs.maxclientslimit) - { - n = svs.maxclientslimit; + n = bound(1, n, MAX_SCOREBOARD); + if (svs.maxclients != n) Con_Printf ("\"maxplayers\" set to \"%u\"\n", n); - } if ((n == 1) && listening) Cbuf_AddText ("listen 0\n"); @@ -200,14 +187,7 @@ static void MaxPlayers_f (void) if ((n > 1) && (!listening)) Cbuf_AddText ("listen 1\n"); - svs.maxclients = n; - // LordHavoc: resetting deathmatch and coop was silly - /* - if (n == 1) - Cvar_Set ("deathmatch", "0"); - else - Cvar_Set ("deathmatch", "1"); - */ + SV_SetMaxClients(n); } @@ -284,7 +264,7 @@ void NET_Slist_f (void) } slistInProgress = true; - slistStartTime = Sys_FloatTime(); + slistStartTime = Sys_DoubleTime(); SchedulePollProcedure(&slistSendProcedure, 0.0); SchedulePollProcedure(&slistPollProcedure, 0.1); @@ -304,7 +284,7 @@ static void Slist_Send(void) dfunc.SearchForHosts (true); } - if ((Sys_FloatTime() - slistStartTime) < 0.5) + if ((Sys_DoubleTime() - slistStartTime) < 0.5) SchedulePollProcedure(&slistSendProcedure, 0.75); } @@ -323,7 +303,7 @@ static void Slist_Poll(void) if (! slistSilent) PrintSlist(); - if ((Sys_FloatTime() - slistStartTime) < 1.5) + if ((Sys_DoubleTime() - slistStartTime) < 1.5) { SchedulePollProcedure(&slistPollProcedure, 0.1); return; @@ -556,7 +536,7 @@ int NET_SendMessage (qsocket_t *sock, sizebuf_t *data) r = sfunc.QSendMessage(sock, data); if (r == 1 && sock->driver) messagesSent++; - + return r; } @@ -641,7 +621,7 @@ int NET_SendToAll(sizebuf_t *data, int blocktime) } } - start = Sys_FloatTime(); + start = Sys_DoubleTime(); while (count) { count = 0; @@ -676,7 +656,7 @@ int NET_SendToAll(sizebuf_t *data, int blocktime) continue; } } - if ((Sys_FloatTime() - start) > blocktime) + if ((Sys_DoubleTime() - start) > blocktime) break; } return count; @@ -695,7 +675,6 @@ void NET_Init (void) { int i; int controlSocket; - qsocket_t *s; i = COM_CheckParm ("-port"); if (!i) @@ -712,24 +691,15 @@ void NET_Init (void) } net_hostport = DEFAULTnet_hostport; - if (COM_CheckParm("-listen") || cls.state == ca_dedicated) + if (COM_CheckParm("-listen") || cls.state == ca_dedicated || gamemode == GAME_TRANSFUSION) listening = true; - net_numsockets = svs.maxclientslimit; - if (cls.state != ca_dedicated) - net_numsockets++; SetNetTime(); - for (i = 0; i < net_numsockets; i++) - { - s = (qsocket_t *)Hunk_AllocName(sizeof(qsocket_t), "qsocket"); - s->next = net_freeSockets; - net_freeSockets = s; - s->disconnected = true; - } + net_mempool = Mem_AllocPool("qsocket"); // allocate space for network message buffer - SZ_Alloc (&net_message, NET_MAXMESSAGE); + SZ_Alloc (&net_message, NET_MAXMESSAGE, "net_message"); Cvar_RegisterVariable (&net_messagetimeout); Cvar_RegisterVariable (&hostname); @@ -763,14 +733,12 @@ NET_Shutdown ==================== */ -void NET_Shutdown (void) +void NET_Shutdown (void) { - qsocket_t *sock; - SetNetTime(); - for (sock = net_activeSockets; sock; sock = sock->next) - NET_Close(sock); + while (net_activeSockets) + NET_Close(net_activeSockets); // // shutdown the drivers @@ -783,6 +751,8 @@ void NET_Shutdown (void) net_drivers[net_driverlevel].initialized = false; } } + + Mem_FreePool(&net_mempool); } @@ -811,7 +781,7 @@ void SchedulePollProcedure(PollProcedure *proc, double timeOffset) { PollProcedure *pp, *prev; - proc->nextTime = Sys_FloatTime() + timeOffset; + proc->nextTime = Sys_DoubleTime() + timeOffset; for (pp = pollProcedureList, prev = NULL; pp; pp = pp->next) { if (pp->nextTime >= proc->nextTime) @@ -829,3 +799,4 @@ void SchedulePollProcedure(PollProcedure *proc, double timeOffset) proc->next = pp; prev->next = proc; } +