X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=net_main.c;h=4c6971d0599c72ba519e80583e8326ecbb7acefb;hb=ce3be9028e11deb62fc4998791a02ed6b1f92895;hp=3fa471ceefaa8b8e797797f8a3290e42b5019735;hpb=1fabf30e345d615ffa9ea8ae6cb39aba0f88d4d2;p=xonotic%2Fdarkplaces.git diff --git a/net_main.c b/net_main.c index 3fa471ce..4c6971d0 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,11 +21,9 @@ 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 serialAvailable = false; qboolean ipxAvailable = false; qboolean tcpipAvailable = false; @@ -35,11 +33,6 @@ int DEFAULTnet_hostport = 26000; char my_ipx_address[NET_NAMELEN]; char my_tcpip_address[NET_NAMELEN]; -void (*GetComPortConfig) (int portNumber, int *port, int *irq, int *baud, qboolean *useModem); -void (*SetComPortConfig) (int portNumber, int port, int irq, int baud, qboolean useModem); -void (*GetModemConfig) (int portNumber, char *dialType, char *clear, char *init, char *hangup); -void (*SetModemConfig) (int portNumber, char *dialType, char *clear, char *init, char *hangup); - static qboolean listening = false; qboolean slistInProgress = false; @@ -62,18 +55,10 @@ 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; -cvar_t config_com_port = {"_config_com_port", "0x3f8", true}; -cvar_t config_com_irq = {"_config_com_irq", "4", true}; -cvar_t config_com_baud = {"_config_com_baud", "57600", true}; -cvar_t config_com_modem = {"_config_com_modem", "1", true}; -cvar_t config_modem_dialtype = {"_config_modem_dialtype", "T", true}; -cvar_t config_modem_clear = {"_config_modem_clear", "ATZ", true}; -cvar_t config_modem_init = {"_config_modem_init", "", true}; -cvar_t config_modem_hangup = {"_config_modem_hangup", "AT H", true}; // these two macros are to make the code more readable #define sfunc net_drivers[sock->driver] @@ -86,7 +71,7 @@ double net_time; double SetNetTime(void) { - net_time = Sys_FloatTime(); + net_time = Sys_DoubleTime(); return net_time; } @@ -103,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; @@ -157,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); } @@ -215,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"); - */ } @@ -298,7 +268,7 @@ void NET_Slist_f (void) } slistInProgress = true; - slistStartTime = Sys_FloatTime(); + slistStartTime = Sys_DoubleTime(); SchedulePollProcedure(&slistSendProcedure, 0.0); SchedulePollProcedure(&slistPollProcedure, 0.1); @@ -318,7 +288,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); } @@ -337,7 +307,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; @@ -570,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; } @@ -655,7 +625,7 @@ int NET_SendToAll(sizebuf_t *data, int blocktime) } } - start = Sys_FloatTime(); + start = Sys_DoubleTime(); while (count) { count = 0; @@ -690,7 +660,7 @@ int NET_SendToAll(sizebuf_t *data, int blocktime) continue; } } - if ((Sys_FloatTime() - start) > blocktime) + if ((Sys_DoubleTime() - start) > blocktime) break; } return count; @@ -709,7 +679,6 @@ void NET_Init (void) { int i; int controlSocket; - qsocket_t *s; i = COM_CheckParm ("-port"); if (!i) @@ -726,35 +695,18 @@ 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); - Cvar_RegisterVariable (&config_com_port); - Cvar_RegisterVariable (&config_com_irq); - Cvar_RegisterVariable (&config_com_baud); - Cvar_RegisterVariable (&config_com_modem); - Cvar_RegisterVariable (&config_modem_dialtype); - Cvar_RegisterVariable (&config_modem_clear); - Cvar_RegisterVariable (&config_modem_init); - Cvar_RegisterVariable (&config_modem_hangup); Cmd_AddCommand ("slist", NET_Slist_f); Cmd_AddCommand ("listen", NET_Listen_f); @@ -805,6 +757,8 @@ void NET_Shutdown (void) net_drivers[net_driverlevel].initialized = false; } } + + Mem_FreePool(&net_mempool); } @@ -813,21 +767,9 @@ static PollProcedure *pollProcedureList = NULL; void NET_Poll(void) { PollProcedure *pp; - qboolean useModem; if (!configRestored) - { - if (serialAvailable) - { - if (config_com_modem.value == 1.0) - useModem = true; - else - useModem = false; - SetComPortConfig (0, (int)config_com_port.value, (int)config_com_irq.value, (int)config_com_baud.value, useModem); - SetModemConfig (0, config_modem_dialtype.string, config_modem_clear.string, config_modem_init.string, config_modem_hangup.string); - } configRestored = true; - } SetNetTime(); @@ -845,7 +787,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) @@ -863,3 +805,4 @@ void SchedulePollProcedure(PollProcedure *proc, double timeOffset) proc->next = pp; prev->next = proc; } +