]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - net_main.c
disabled memory clumping, which surprisingly improves memory use, rather than hinders...
[xonotic/darkplaces.git] / net_main.c
index b457a672da4c659c0f7e792981083f3c9e16468f..4c6971d0599c72ba519e80583e8326ecbb7acefb 100644 (file)
@@ -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;
@@ -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);
 }
 
 
@@ -201,13 +192,6 @@ static void MaxPlayers_f (void)
                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");
-       */
 }
 
 
@@ -556,7 +540,7 @@ int NET_SendMessage (qsocket_t *sock, sizebuf_t *data)
        r = sfunc.QSendMessage(sock, data);
        if (r == 1 && sock->driver)
                messagesSent++;
-       
+
        return r;
 }
 
@@ -695,7 +679,6 @@ void NET_Init (void)
 {
        int                     i;
        int                     controlSocket;
-       qsocket_t       *s;
 
        i = COM_CheckParm ("-port");
        if (!i)
@@ -712,24 +695,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_BLOODBATH)
                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);
@@ -783,6 +757,8 @@ void                NET_Shutdown (void)
                        net_drivers[net_driverlevel].initialized = false;
                }
        }
+
+       Mem_FreePool(&net_mempool);
 }
 
 
@@ -829,3 +805,4 @@ void SchedulePollProcedure(PollProcedure *proc, double timeOffset)
        proc->next = pp;
        prev->next = proc;
 }
+