X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fnet.c;h=7c600534e3a682488200bbfa9f4cf320e7fe11f3;hp=b9f441a0d0b9b774d3ab7fb914395dca3b9ba9d5;hb=529b8fab8c21e7ae5af91d742ff202eab38e51f3;hpb=5f79c2c0882e03648acb9c4a2f6780a7513c61aa diff --git a/src/net.c b/src/net.c index b9f441a0..7c600534 100644 --- a/src/net.c +++ b/src/net.c @@ -118,6 +118,10 @@ static void timeout_handler(event_loop_t *loop, void *data) { int pingtimeout = c->node ? mesh->dev_class_traits[c->node->devclass].pingtimeout : default_timeout; int pinginterval = c->node ? mesh->dev_class_traits[c->node->devclass].pinginterval : default_interval; + if(c->outgoing && c->outgoing->timeout < 5) { + pingtimeout = 1; + } + // Also make sure that if outstanding key requests for the UDP counterpart of a connection has timed out, we restart it. if(c->node) { if(c->node->status.waitingforkey && c->node->last_req_key + pingtimeout <= mesh->loop.now.tv_sec) { @@ -148,7 +152,7 @@ static void timeout_handler(event_loop_t *loop, void *data) { } timeout_set(&mesh->loop, data, &(struct timeval) { - default_timeout, prng(mesh, TIMER_FUDGE) + 1, prng(mesh, TIMER_FUDGE) }); } @@ -701,7 +705,7 @@ void retry(meshlink_handle_t *mesh) { */ void main_loop(meshlink_handle_t *mesh) { timeout_add(&mesh->loop, &mesh->pingtimer, timeout_handler, &mesh->pingtimer, &(struct timeval) { - default_timeout, prng(mesh, TIMER_FUDGE) + 1, prng(mesh, TIMER_FUDGE) }); timeout_add(&mesh->loop, &mesh->periodictimer, periodic_handler, &mesh->periodictimer, &(struct timeval) { 0, 0