X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=net_dgrm.c;h=20f06c58d9f8fd468a83d3c32bff586f5e570954;hb=12a3c44a3e0403d4806d8803cc1469e7c822a975;hp=78ec74a42276d0490613e66349e09e81a108f6aa;hpb=cecffffdd5310e387e8b910735ff77aa329cdb43;p=xonotic%2Fdarkplaces.git diff --git a/net_dgrm.c b/net_dgrm.c index 78ec74a4..20f06c58 100644 --- a/net_dgrm.c +++ b/net_dgrm.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. @@ -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) { @@ -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; } +