X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=netconn.c;h=a297a054a879000bbc276f81117759adc1258737;hb=301157297096e22c94a47205d529a2cfbeaf996d;hp=559203ecb263bcac5105bda1f8c405805996eabb;hpb=a0338ffd578afdaf693aee96bc6f948afb5b1844;p=xonotic%2Fdarkplaces.git diff --git a/netconn.c b/netconn.c index 559203ec..a297a054 100755 --- a/netconn.c +++ b/netconn.c @@ -25,7 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define MASTER_PORT 27950 -cvar_t sv_maxplayers = {0, "maxplayers", "8"}; cvar_t sv_public = {0, "sv_public", "0"}; static cvar_t sv_heartbeatperiod = {CVAR_SAVE, "sv_heartbeatperiod", "180"}; @@ -50,6 +49,14 @@ cvar_t net_connecttimeout = {0, "net_connecttimeout","10"}; cvar_t hostname = {CVAR_SAVE, "hostname", "UNNAMED"}; cvar_t developer_networking = {0, "developer_networking", "0"}; +cvar_t cl_fakelocalping_min = {0, "cl_fakelocalping_min","0"}; +cvar_t cl_fakelocalping_max = {0, "cl_fakelocalping_max","0"}; +static cvar_t cl_fakepacketloss_receive = {0, "cl_fakepacketloss_receive","0"}; +static cvar_t cl_fakepacketloss_send = {0, "cl_fakepacketloss_send","0"}; +static cvar_t sv_fakepacketloss_receive = {0, "sv_fakepacketloss_receive","0"}; +static cvar_t sv_fakepacketloss_send = {0, "sv_fakepacketloss_send","0"}; + + /* statistic counters */ static int packetsSent = 0; static int packetsReSent = 0; @@ -87,6 +94,15 @@ cvar_t sv_netaddress_ipv6 = {0, "sv_netaddress_ipv6", "[0:0:0:0:0:0:0:0]:26000"} int NetConn_Read(lhnetsocket_t *mysocket, void *data, int maxlength, lhnetaddress_t *peeraddress) { int length = LHNET_Read(mysocket, data, maxlength, peeraddress); + int i; + if (cl_fakepacketloss_receive.integer) + for (i = 0;i < cl_numsockets;i++) + if (cl_sockets[i] == mysocket && (rand() % 100) < cl_fakepacketloss_receive.integer) + return 0; + if (sv_fakepacketloss_receive.integer) + for (i = 0;i < cl_numsockets;i++) + if (sv_sockets[i] == mysocket && (rand() % 100) < sv_fakepacketloss_receive.integer) + return 0; if (developer_networking.integer && length != 0) { char addressstring[128], addressstring2[128]; @@ -105,7 +121,17 @@ int NetConn_Read(lhnetsocket_t *mysocket, void *data, int maxlength, lhnetaddres int NetConn_Write(lhnetsocket_t *mysocket, const void *data, int length, const lhnetaddress_t *peeraddress) { - int ret = LHNET_Write(mysocket, data, length, peeraddress); + int ret; + int i; + if (cl_fakepacketloss_send.integer) + for (i = 0;i < cl_numsockets;i++) + if (cl_sockets[i] == mysocket && (rand() % 100) < cl_fakepacketloss_send.integer) + return length; + if (sv_fakepacketloss_send.integer) + for (i = 0;i < cl_numsockets;i++) + if (sv_sockets[i] == mysocket && (rand() % 100) < sv_fakepacketloss_send.integer) + return length; + ret = LHNET_Write(mysocket, data, length, peeraddress); if (developer_networking.integer) { char addressstring[128], addressstring2[128]; @@ -918,7 +944,7 @@ static void NetConn_BuildChallengeString(char *buffer, int bufferlength) extern void SV_ConnectClient(int clientnum, netconn_t *netconnection); int NetConn_ServerParsePacket(lhnetsocket_t *mysocket, qbyte *data, int length, lhnetaddress_t *peeraddress) { - int i, n, ret, clientnum, responselength, best; + int i, n, ret, clientnum, responselength, best, clientcount; double besttime; client_t *client; netconn_t *conn; @@ -1503,6 +1529,12 @@ void NetConn_Init(void) Cvar_RegisterVariable(&net_messagetimeout); Cvar_RegisterVariable(&net_messagerejointimeout); Cvar_RegisterVariable(&net_connecttimeout); + Cvar_RegisterVariable(&cl_fakelocalping_min); + Cvar_RegisterVariable(&cl_fakelocalping_max); + Cvar_RegisterVariable(&cl_fakepacketloss_receive); + Cvar_RegisterVariable(&cl_fakepacketloss_send); + Cvar_RegisterVariable(&sv_fakepacketloss_receive); + Cvar_RegisterVariable(&sv_fakepacketloss_send); Cvar_RegisterVariable(&hostname); Cvar_RegisterVariable(&developer_networking); Cvar_RegisterVariable(&cl_netport); @@ -1511,7 +1543,6 @@ void NetConn_Init(void) Cvar_RegisterVariable(&sv_netport); Cvar_RegisterVariable(&sv_netaddress); Cvar_RegisterVariable(&sv_netaddress_ipv6); - Cvar_RegisterVariable(&sv_maxplayers); Cvar_RegisterVariable(&sv_public); Cvar_RegisterVariable(&sv_heartbeatperiod); for (masternum = 0;sv_masters[masternum].name;masternum++)