X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=net_main.c;h=4450e235635671f4d790c321e92c2a64cabafbb5;hb=4e9a99de5786d5d87a148427e288c9ddfe24ee7c;hp=3fa471ceefaa8b8e797797f8a3290e42b5019735;hpb=1fabf30e345d615ffa9ea8ae6cb39aba0f88d4d2;p=xonotic%2Fdarkplaces.git diff --git a/net_main.c b/net_main.c index 3fa471ce..4450e235 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,11 @@ 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; +//qsocket_t *net_freeSockets = NULL; +//int net_numsockets = 0; +mempool_t *net_mempool; -qboolean serialAvailable = false; qboolean ipxAvailable = false; qboolean tcpipAvailable = false; @@ -35,11 +35,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 +57,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 +73,7 @@ double net_time; double SetNetTime(void) { - net_time = Sys_FloatTime(); + net_time = Sys_DoubleTime(); return net_time; } @@ -103,15 +90,17 @@ qsocket_t *NET_NewQSocket (void) { qsocket_t *sock; - if (net_freeSockets == NULL) - return NULL; +// 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 = net_freeSockets; +// net_freeSockets = sock->next; + // LordHavoc: sockets are dynamically allocated now + sock = Mem_Alloc(net_mempool, sizeof(qsocket_t)); // add it to active list sock->next = net_activeSockets; @@ -158,9 +147,11 @@ void NET_FreeQSocket(qsocket_t *sock) } // add it to free list - sock->next = net_freeSockets; - net_freeSockets = sock; - sock->disconnected = true; +// sock->next = net_freeSockets; +// net_freeSockets = sock; +// sock->disconnected = true; + // LordHavoc: sockets are dynamically allocated now + Mem_Free(sock); } @@ -298,7 +289,7 @@ void NET_Slist_f (void) } slistInProgress = true; - slistStartTime = Sys_FloatTime(); + slistStartTime = Sys_DoubleTime(); SchedulePollProcedure(&slistSendProcedure, 0.0); SchedulePollProcedure(&slistPollProcedure, 0.1); @@ -318,7 +309,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 +328,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 +561,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 +646,7 @@ int NET_SendToAll(sizebuf_t *data, int blocktime) } } - start = Sys_FloatTime(); + start = Sys_DoubleTime(); while (count) { count = 0; @@ -690,7 +681,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 +700,8 @@ void NET_Init (void) { int i; int controlSocket; - qsocket_t *s; + // LordHavoc: sockets are dynamically allocated now + //qsocket_t *s; i = COM_CheckParm ("-port"); if (!i) @@ -726,35 +718,33 @@ 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++; + // LordHavoc: sockets are dynamically allocated now + //net_numsockets = svs.maxclientslimit; + //if (cls.state != ca_dedicated) + // net_numsockets++; SetNetTime(); + net_mempool = Mem_AllocPool("qsocket"); + // LordHavoc: sockets are dynamically allocated now + /* + s = Mem_Alloc(net_mempool, net_numsockets * sizeof(qsocket_t)); 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; + s++; } + */ // 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 +795,8 @@ void NET_Shutdown (void) net_drivers[net_driverlevel].initialized = false; } } + + Mem_FreePool(&net_mempool); } @@ -813,21 +805,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 +825,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)