Ignore old packets
This commit is contained in:
16
mud.c
16
mud.c
@@ -75,7 +75,6 @@ struct crypto {
|
|||||||
|
|
||||||
struct mud {
|
struct mud {
|
||||||
int fd;
|
int fd;
|
||||||
uint64_t base;
|
|
||||||
struct queue tx;
|
struct queue tx;
|
||||||
struct queue rx;
|
struct queue rx;
|
||||||
struct sock *sock;
|
struct sock *sock;
|
||||||
@@ -110,7 +109,13 @@ uint64_t mud_now (struct mud *mud)
|
|||||||
{
|
{
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
gettimeofday(&now, NULL);
|
gettimeofday(&now, NULL);
|
||||||
return (now.tv_sec*UINT64_C(1000000)+now.tv_usec)-mud->base;
|
return (now.tv_sec*UINT64_C(1000000)+now.tv_usec)&((UINT64_C(1)<<48)-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
uint64_t mud_dt (uint64_t a, uint64_t b)
|
||||||
|
{
|
||||||
|
return (a >= b)?a-b:b-a;
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
@@ -538,8 +543,6 @@ struct mud *mud_create (const char *port)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
mud->base = mud_now(mud);
|
|
||||||
|
|
||||||
return mud;
|
return mud;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -697,6 +700,10 @@ int mud_pull (struct mud *mud)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
uint64_t now = mud_now(mud);
|
uint64_t now = mud_now(mud);
|
||||||
|
uint64_t send_time = mud_read48(packet->data);
|
||||||
|
|
||||||
|
if (mud_dt(now, send_time) >= UINT64_C(1000000*60*10))
|
||||||
|
continue;
|
||||||
|
|
||||||
mud_unmapv4((struct sockaddr *)&addr);
|
mud_unmapv4((struct sockaddr *)&addr);
|
||||||
|
|
||||||
@@ -765,7 +772,6 @@ int mud_pull (struct mud *mud)
|
|||||||
|
|
||||||
path->up = 1;
|
path->up = 1;
|
||||||
|
|
||||||
uint64_t send_time = mud_read48(packet->data);
|
|
||||||
int64_t dt = (now-path->recv.time)-(send_time-path->recv.send_time);
|
int64_t dt = (now-path->recv.time)-(send_time-path->recv.send_time);
|
||||||
|
|
||||||
if (path->recv.time && path->recv.send_time && (dt > 0))
|
if (path->recv.time && path->recv.send_time && (dt > 0))
|
||||||
|
|||||||
Reference in New Issue
Block a user