]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - net_dgrm.c
got rid of gl_mesh_drawmode, now only gl_mesh_drawrangeelements remains, this got...
[xonotic/darkplaces.git] / net_dgrm.c
index 3f8f22e8a649c2380bf7937703f8560bddc18a2e..20f06c58d9f8fd468a83d3c32bff586f5e570954 100644 (file)
@@ -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.
 
@@ -55,6 +55,8 @@ unsigned long inet_addr(const char *cp);
 #include "quakedef.h"
 #include "net_dgrm.h"
 
+cvar_t cl_port = {CVAR_SAVE, "cl_port", "0"};
+
 // these two macros are to make the code more readable
 #define sfunc  net_landrivers[sock->landriver]
 #define dfunc  net_landrivers[net_landriverlevel]
@@ -75,27 +77,22 @@ struct
 {
        unsigned int    length;
        unsigned int    sequence;
-       byte                    data[MAX_DATAGRAM];
+       qbyte                   data[MAX_DATAGRAM];
 } packetBuffer;
 
-extern int m_return_state;
-extern int m_state;
-extern qboolean m_return_onerror;
-extern char m_return_reason[32];
-
 
-#ifdef DEBUG
+//#ifdef DEBUG
 char *StrAddr (struct qsockaddr *addr)
 {
        static char buf[34];
-       byte *p = (byte *)addr;
+       qbyte *p = (qbyte *)addr;
        int n;
 
        for (n = 0; n < 16; n++)
                sprintf (buf + n * 2, "%02x", *p++);
        return buf;
 }
-#endif
+//#endif
 
 
 #ifdef BAN_TEST
@@ -106,7 +103,7 @@ void NET_Ban_f (void)
 {
        char    addrStr [32];
        char    maskStr [32];
-       void    (*print) (char *fmt, ...);
+       void    (*print) (const char *fmt, ...);
 
        if (cmd_source == src_command)
        {
@@ -119,7 +116,7 @@ void NET_Ban_f (void)
        }
        else
        {
-               if (pr_global_struct->deathmatch && !host_client->privileged)
+               if (pr_global_struct->deathmatch)
                        return;
                print = SV_ClientPrintf;
        }
@@ -196,7 +193,7 @@ int Datagram_SendMessage (qsocket_t *sock, sizebuf_t *data)
 
        sock->canSend = false;
 
-       if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1)
+       if (sfunc.Write (sock->socket, (qbyte *)&packetBuffer, packetLen, &sock->addr) == -1)
                return -1;
 
        sock->lastSendTime = net_time;
@@ -229,7 +226,7 @@ int SendMessageNext (qsocket_t *sock)
 
        sock->sendNext = false;
 
-       if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1)
+       if (sfunc.Write (sock->socket, (qbyte *)&packetBuffer, packetLen, &sock->addr) == -1)
                return -1;
 
        sock->lastSendTime = net_time;
@@ -262,7 +259,7 @@ int ReSendMessage (qsocket_t *sock)
 
        sock->sendNext = false;
 
-       if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1)
+       if (sfunc.Write (sock->socket, (qbyte *)&packetBuffer, packetLen, &sock->addr) == -1)
                return -1;
 
        sock->lastSendTime = net_time;
@@ -304,7 +301,7 @@ int Datagram_SendUnreliableMessage (qsocket_t *sock, sizebuf_t *data)
        packetBuffer.sequence = BigLong(sock->unreliableSendSequence++);
        memcpy (packetBuffer.data, data->data, data->cursize);
 
-       if (sfunc.Write (sock->socket, (byte *)&packetBuffer, packetLen, &sock->addr) == -1)
+       if (sfunc.Write (sock->socket, (qbyte *)&packetBuffer, packetLen, &sock->addr) == -1)
                return -1;
 
        packetsSent++;
@@ -326,11 +323,8 @@ int        Datagram_GetMessage (qsocket_t *sock)
                        ReSendMessage (sock);
 
        while(1)
-       {       
-               length = sfunc.Read (sock->socket, (byte *)&packetBuffer, NET_DATAGRAMSIZE, &readaddr);
-
-//     if ((rand() & 255) > 220)
-//             continue;
+       {
+               length = sfunc.Read (sock->socket, (qbyte *)&packetBuffer, NET_DATAGRAMSIZE, &readaddr);
 
                if (length == 0)
                        break;
@@ -428,7 +422,7 @@ int Datagram_GetMessage (qsocket_t *sock)
                {
                        packetBuffer.length = BigLong(NET_HEADERSIZE | NETFLAG_ACK);
                        packetBuffer.sequence = BigLong(sequence);
-                       sfunc.Write (sock->socket, (byte *)&packetBuffer, NET_HEADERSIZE, &readaddr);
+                       sfunc.Write (sock->socket, (qbyte *)&packetBuffer, NET_HEADERSIZE, &readaddr);
 
                        if (sequence != sock->receiveSequence)
                        {
@@ -492,18 +486,12 @@ void NET_Stats_f (void)
        {
                for (s = net_activeSockets; s; s = s->next)
                        PrintStats(s);
-               for (s = net_freeSockets; s; s = s->next)
-                       PrintStats(s);
        }
        else
        {
                for (s = net_activeSockets; s; s = s->next)
                        if (Q_strcasecmp(Cmd_Argv(1), s->address) == 0)
                                break;
-               if (s == NULL)
-                       for (s = net_freeSockets; s; s = s->next)
-                               if (Q_strcasecmp(Cmd_Argv(1), s->address) == 0)
-                                       break;
                if (s == NULL)
                        return;
                PrintStats(s);
@@ -529,7 +517,8 @@ static void Test_Poll(void)
        int             colors;
        int             frags;
        int             connectTime;
-       byte    playerNumber;
+       qbyte   playerNumber;
+       int             c;
 
        net_landriverlevel = testDriver;
 
@@ -551,7 +540,8 @@ static void Test_Poll(void)
                if ((control & NETFLAG_LENGTH_MASK) != len)
                        break;
 
-               if (MSG_ReadByte() != CCREP_PLAYER_INFO)
+               c = MSG_ReadByte();
+               if (c != CCREP_PLAYER_INFO)
                        Sys_Error("Unexpected repsonse to Player Info request\n");
 
                playerNumber = MSG_ReadByte();
@@ -578,9 +568,8 @@ static void Test_Poll(void)
 
 static void Test_f (void)
 {
-       char    *host;
-       int             n;
-       int             max = MAX_SCOREBOARD;
+       const char *host;
+       int n, max = MAX_SCOREBOARD;
        struct qsockaddr sendaddr;
 
        if (testInProgress)
@@ -652,6 +641,7 @@ static void Test2_Poll(void)
        struct qsockaddr clientaddr;
        int             control;
        int             len;
+       int             c;
        char    name[256];
        char    value[256];
 
@@ -674,7 +664,8 @@ static void Test2_Poll(void)
        if ((control & NETFLAG_LENGTH_MASK) != len)
                goto Error;
 
-       if (MSG_ReadByte() != CCREP_RULE_INFO)
+       c = MSG_ReadByte();
+       if (c != CCREP_RULE_INFO)
                goto Error;
 
        strcpy(name, MSG_ReadString());
@@ -707,8 +698,8 @@ Done:
 
 static void Test2_f (void)
 {
-       char    *host;
-       int             n;
+       const char *host;
+       int n;
        struct qsockaddr sendaddr;
 
        if (test2InProgress)
@@ -770,6 +761,7 @@ int Datagram_Init (void)
 
        myDriverLevel = net_driverlevel;
        Cmd_AddCommand ("net_stats", NET_Stats_f);
+       Cvar_RegisterVariable (&cl_port);
 
        if (COM_CheckParm("-nolan"))
                return -1;
@@ -839,6 +831,7 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
        int                     command;
        int                     control;
        int                     ret;
+       int                     c;
 
        acceptsock = dfunc.CheckNewConnections();
        if (acceptsock == -1)
@@ -890,7 +883,7 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
                int                     activeNumber;
                int                     clientNumber;
                client_t        *client;
-               
+
                playerNumber = MSG_ReadByte();
                activeNumber = -1;
                for (clientNumber = 0, client = svs.clients; clientNumber < svs.maxclients; clientNumber++, client++)
@@ -929,23 +922,7 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
 
                // find the search start location
                prevCvarName = MSG_ReadString();
-               if (*prevCvarName)
-               {
-                       var = Cvar_FindVar (prevCvarName);
-                       if (!var)
-                               return NULL;
-                       var = var->next;
-               }
-               else
-                       var = cvar_vars;
-
-               // search for the next server cvar
-               while (var)
-               {
-                       if (var->server)
-                               break;
-                       var = var->next;
-               }
+               var = Cvar_FindVarAfter(prevCvarName, CVAR_NOTIFY);
 
                // send the response
 
@@ -971,7 +948,8 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
        if (strcmp(MSG_ReadString(), "QUAKE") != 0)
                return NULL;
 
-       if (MSG_ReadByte() != NET_PROTOCOL_VERSION)
+       c = MSG_ReadByte();
+       if (c != NET_PROTOCOL_VERSION)
        {
                SZ_Clear(&net_message);
                // save space for the header, filled in later
@@ -1067,7 +1045,7 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
                return NULL;
        }
 
-       // everything is allocated, just fill in the details    
+       // everything is allocated, just fill in the details
        sock->socket = newsock;
        sock->landriver = net_landriverlevel;
        sock->addr = clientaddr;
@@ -1080,7 +1058,6 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
        MSG_WriteByte(&net_message, CCREP_ACCEPT);
        dfunc.GetSocketAddr(newsock, &newaddr);
        MSG_WriteLong(&net_message, dfunc.GetSocketPort(&newaddr));
-//     MSG_WriteString(&net_message, dfunc.AddrToString(&newaddr));
        *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK));
        dfunc.Write (acceptsock, net_message.data, net_message.cursize, &clientaddr);
        SZ_Clear(&net_message);
@@ -1108,6 +1085,7 @@ static void _Datagram_SearchForHosts (qboolean xmit)
        struct qsockaddr readaddr;
        struct qsockaddr myaddr;
        int             control;
+       int             c;
 
        dfunc.GetSocketAddr (dfunc.controlSock, &myaddr);
        if (xmit)
@@ -1147,7 +1125,8 @@ static void _Datagram_SearchForHosts (qboolean xmit)
                if ((control & NETFLAG_LENGTH_MASK) != ret)
                        continue;
 
-               if (MSG_ReadByte() != CCREP_SERVER_INFO)
+               c = MSG_ReadByte();
+               if (c != CCREP_SERVER_INFO)
                        continue;
 
                dfunc.GetAddrFromName(MSG_ReadString(), &readaddr);
@@ -1166,7 +1145,8 @@ static void _Datagram_SearchForHosts (qboolean xmit)
                strcpy(hostcache[n].map, MSG_ReadString());
                hostcache[n].users = MSG_ReadByte();
                hostcache[n].maxusers = MSG_ReadByte();
-               if (MSG_ReadByte() != NET_PROTOCOL_VERSION)
+               c = MSG_ReadByte();
+               if (c != NET_PROTOCOL_VERSION)
                {
                        strcpy(hostcache[n].cname, hostcache[n].name);
                        hostcache[n].cname[14] = 0;
@@ -1227,7 +1207,7 @@ static qsocket_t *_Datagram_Connect (char *host)
        if (dfunc.GetAddrFromName(host, &sendaddr) == -1)
                return NULL;
 
-       newsock = dfunc.OpenSocket (0);
+       newsock = dfunc.OpenSocket (cl_port.integer);
        if (newsock == -1)
                return NULL;
 
@@ -1242,7 +1222,7 @@ static qsocket_t *_Datagram_Connect (char *host)
                goto ErrorReturn;
 
        // send the connection request
-       Con_Printf("trying...\n"); SCR_UpdateScreen ();
+       Con_Printf("trying...\n");CL_UpdateScreen();CL_UpdateScreen();
        start_time = net_time;
 
        for (reps = 0; reps < 3; reps++)
@@ -1265,12 +1245,10 @@ static qsocket_t *_Datagram_Connect (char *host)
                                // is it from the right place?
                                if (sfunc.AddrCompare(&readaddr, &sendaddr) != 0)
                                {
-#ifdef DEBUG
-                                       Con_Printf("wrong reply address\n");
-                                       Con_Printf("Expected: %s\n", StrAddr (&sendaddr));
-                                       Con_Printf("Received: %s\n", StrAddr (&readaddr));
-                                       SCR_UpdateScreen ();
-#endif
+                                       Con_DPrintf("wrong reply address\n");
+                                       Con_DPrintf("Expected: %s\n", StrAddr (&sendaddr));
+                                       Con_DPrintf("Received: %s\n", StrAddr (&readaddr));
+                                       CL_UpdateScreen ();
                                        ret = 0;
                                        continue;
                                }
@@ -1306,7 +1284,7 @@ static qsocket_t *_Datagram_Connect (char *host)
                while (ret == 0 && (SetNetTime() - start_time) < 2.5);
                if (ret)
                        break;
-               Con_Printf("still trying...\n"); SCR_UpdateScreen ();
+               Con_Printf("still trying...\n");CL_UpdateScreen();CL_UpdateScreen();
                start_time = SetNetTime();
        }
 
@@ -1330,7 +1308,7 @@ static qsocket_t *_Datagram_Connect (char *host)
        if (ret == CCREP_REJECT)
        {
                reason = MSG_ReadString();
-               Con_Printf(reason);
+               Con_Printf("%s", reason);
                strncpy(m_return_reason, reason, 31);
                goto ErrorReturn;
        }
@@ -1350,7 +1328,7 @@ static qsocket_t *_Datagram_Connect (char *host)
 
        dfunc.GetNameFromAddr (&sendaddr, sock->address);
 
-       Con_Printf ("Connection accepted\n");
+       Con_Printf ("Connection accepted to %s\n", sock->address);
        sock->lastMessageTime = SetNetTime();
 
        // switch the connection to the specified address
@@ -1388,3 +1366,4 @@ qsocket_t *Datagram_Connect (char *host)
                                break;
        return ret;
 }
+