mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-25 05:11:35 +00:00
Revised code so the rate limiting can be implemented, also suppressed the wouldblock messages which shouldn't ever have been printed anyway (call them lost packets).
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2419 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
d2b31f9ac6
commit
0df8ab6833
1 changed files with 13 additions and 5 deletions
|
@ -31,7 +31,11 @@ void NET_SendPacket(cluster_t *cluster, SOCKET sock, int length, char *data, net
|
|||
ret = sendto(sock, data, length, 0, (struct sockaddr *)adr, sizeof(struct sockaddr_in));
|
||||
if (ret < 0)
|
||||
{
|
||||
Sys_Printf(cluster, "udp send error %i\n", ret);
|
||||
int er = qerrno;
|
||||
if (er == EWOULDBLOCK)
|
||||
return;
|
||||
|
||||
Sys_Printf(cluster, "udp send error %i\n", er);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -189,7 +193,7 @@ void Netchan_Setup (SOCKET sock, netchan_t *chan, netadr_t adr, int qport, qbool
|
|||
|
||||
chan->message.allowoverflow = true;
|
||||
|
||||
chan->rate = 1.0f/2500;
|
||||
chan->rate = 1000.0f/2500;
|
||||
}
|
||||
|
||||
|
||||
|
@ -203,11 +207,13 @@ Returns true if the bandwidth choke isn't active
|
|||
#define MAX_BACKUP 200
|
||||
qboolean Netchan_CanPacket (netchan_t *chan)
|
||||
{
|
||||
unsigned int t;
|
||||
// unlimited bandwidth for local client
|
||||
// if (chan->remote_address.type == NA_LOOPBACK)
|
||||
// return true;
|
||||
|
||||
if (chan->cleartime < curtime + MAX_BACKUP*chan->rate)
|
||||
t = curtime;
|
||||
if (chan->cleartime < t + MAX_BACKUP*chan->rate)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -239,6 +245,7 @@ A 0 length will still generate a packet and deal with the reliable messages.
|
|||
*/
|
||||
void Netchan_Transmit (cluster_t *cluster, netchan_t *chan, int length, const unsigned char *data)
|
||||
{
|
||||
unsigned int t;
|
||||
netmsg_t send;
|
||||
unsigned char send_buf[MAX_NQMSGLEN + PACKET_HEADER];
|
||||
qboolean send_reliable;
|
||||
|
@ -376,8 +383,9 @@ void Netchan_Transmit (cluster_t *cluster, netchan_t *chan, int length, const un
|
|||
|
||||
NET_SendPacket (cluster, chan->sock, send.cursize, send.data, chan->remote_address);
|
||||
|
||||
if (chan->cleartime < curtime)
|
||||
chan->cleartime = curtime + send.cursize*chan->rate;
|
||||
t = curtime;
|
||||
if (chan->cleartime < t)
|
||||
chan->cleartime = t + send.cursize*chan->rate;
|
||||
else
|
||||
chan->cleartime += send.cursize*chan->rate;
|
||||
#ifndef CLIENTONLY
|
||||
|
|
Loading…
Reference in a new issue