]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - netconn.c
added ping and packet loss display to scoreboard, and pings/pingplreport commands...
[xonotic/darkplaces.git] / netconn.c
index 22f4e749d9f8ec55c7584d47e3010ac8a0b059cb..79448a9c4f4c9a79da4b0e0e68975853ece45749 100755 (executable)
--- a/netconn.c
+++ b/netconn.c
@@ -846,6 +846,8 @@ static int NetConn_ReceivedMessage(netconn_t *conn, unsigned char *data, int len
        if (length < 8)
                return 0;
 
+       // TODO: add netgraph stuff rather than just packetloss counting...
+
        if (protocol == PROTOCOL_QUAKEWORLD)
        {
                int sequence, sequence_ack;
@@ -876,15 +878,22 @@ static int NetConn_ReceivedMessage(netconn_t *conn, unsigned char *data, int len
                sequence_ack &= ~(1<<31);
                if (sequence <= conn->qw.incoming_sequence)
                {
-                       Con_DPrint("Got a stale datagram\n");
+                       //Con_DPrint("Got a stale datagram\n");
                        return 0;
                }
                count = sequence - (conn->qw.incoming_sequence + 1);
                if (count > 0)
                {
                        droppedDatagrams += count;
-                       Con_DPrintf("Dropped %u datagram(s)\n", count);
+                       //Con_DPrintf("Dropped %u datagram(s)\n", count);
+                       while (count--)
+                       {
+                               conn->packetlost[conn->packetlostcounter] = true;
+                               conn->packetlostcounter = (conn->packetlostcounter + 1) % 100;
+                       }
                }
+               conn->packetlost[conn->packetlostcounter] = false;
+               conn->packetlostcounter = (conn->packetlostcounter + 1) % 100;
                if (reliable_ack == conn->qw.reliable_sequence)
                {
                        // received, now we will be able to send another reliable message
@@ -931,8 +940,15 @@ static int NetConn_ReceivedMessage(netconn_t *conn, unsigned char *data, int len
                                        {
                                                count = sequence - conn->nq.unreliableReceiveSequence;
                                                droppedDatagrams += count;
-                                               Con_DPrintf("Dropped %u datagram(s)\n", count);
+                                               //Con_DPrintf("Dropped %u datagram(s)\n", count);
+                                               while (count--)
+                                               {
+                                                       conn->packetlost[conn->packetlostcounter] = true;
+                                                       conn->packetlostcounter = (conn->packetlostcounter + 1) % 100;
+                                               }
                                        }
+                                       conn->packetlost[conn->packetlostcounter] = false;
+                                       conn->packetlostcounter = (conn->packetlostcounter + 1) % 100;
                                        conn->nq.unreliableReceiveSequence = sequence + 1;
                                        conn->lastMessageTime = realtime;
                                        conn->timeout = realtime + net_messagetimeout.value;
@@ -945,8 +961,8 @@ static int NetConn_ReceivedMessage(netconn_t *conn, unsigned char *data, int len
                                                return 2;
                                        }
                                }
-                               else
-                                       Con_DPrint("Got a stale datagram\n");
+                               //else
+                               //      Con_DPrint("Got a stale datagram\n");
                                return 1;
                        }
                        else if (flags & NETFLAG_ACK)
@@ -999,11 +1015,11 @@ static int NetConn_ReceivedMessage(netconn_t *conn, unsigned char *data, int len
                                                else
                                                        conn->sendMessageLength = 0;
                                        }
-                                       else
-                                               Con_DPrint("Duplicate ACK received\n");
+                                       //else
+                                       //      Con_DPrint("Duplicate ACK received\n");
                                }
-                               else
-                                       Con_DPrint("Stale ACK received\n");
+                               //else
+                               //      Con_DPrint("Stale ACK received\n");
                                return 1;
                        }
                        else if (flags & NETFLAG_DATA)
@@ -2209,7 +2225,7 @@ void NetConn_QueryMasters(qboolean querydp, qboolean queryqw)
                                // search internet
                                for (masternum = 0;sv_masters[masternum].name;masternum++)
                                {
-                                       if (sv_masters[masternum].string && LHNETADDRESS_FromString(&masteraddress, sv_masters[masternum].string, DPMASTER_PORT) && LHNETADDRESS_GetAddressType(&masteraddress) == LHNETADDRESS_GetAddressType(LHNET_AddressFromSocket(cl_sockets[i])))
+                                       if (sv_masters[masternum].string && sv_masters[masternum].string[0] && LHNETADDRESS_FromString(&masteraddress, sv_masters[masternum].string, DPMASTER_PORT) && LHNETADDRESS_GetAddressType(&masteraddress) == LHNETADDRESS_GetAddressType(LHNET_AddressFromSocket(cl_sockets[i])))
                                        {
                                                masterquerycount++;
                                                NetConn_WriteString(cl_sockets[i], request, &masteraddress);
@@ -2284,7 +2300,7 @@ void NetConn_Heartbeat(int priority)
        {
                nextheartbeattime = realtime + sv_heartbeatperiod.value;
                for (masternum = 0;sv_masters[masternum].name;masternum++)
-                       if (sv_masters[masternum].string && LHNETADDRESS_FromString(&masteraddress, sv_masters[masternum].string, DPMASTER_PORT) && (mysocket = NetConn_ChooseServerSocketForAddress(&masteraddress)))
+                       if (sv_masters[masternum].string && sv_masters[masternum].string[0] && LHNETADDRESS_FromString(&masteraddress, sv_masters[masternum].string, DPMASTER_PORT) && (mysocket = NetConn_ChooseServerSocketForAddress(&masteraddress)))
                                NetConn_WriteString(mysocket, "\377\377\377\377heartbeat DarkPlaces\x0A", &masteraddress);
        }
 }