X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fnet_socket.c;h=eb9e3fc41f98fca0fe15bf8d0b998425e69553fd;hp=31bc608f1d43fd56f346d9d2736de43c3b79e951;hb=529b8fab8c21e7ae5af91d742ff202eab38e51f3;hpb=5f79c2c0882e03648acb9c4a2f6780a7513c61aa diff --git a/src/net_socket.c b/src/net_socket.c index 31bc608f..eb9e3fc4 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -246,14 +246,18 @@ static void retry_outgoing_handler(event_loop_t *loop, void *data) { } void retry_outgoing(meshlink_handle_t *mesh, outgoing_t *outgoing) { - outgoing->timeout += 5; + if(!mesh->reachable && mesh->loop.now.tv_sec < mesh->last_unreachable + mesh->dev_class_traits[mesh->devclass].fast_retry_period) { + outgoing->timeout = 1; + } else { + outgoing->timeout += 5; + } if(outgoing->timeout > mesh->maxtimeout) { outgoing->timeout = mesh->maxtimeout; } timeout_add(&mesh->loop, &outgoing->ev, retry_outgoing_handler, outgoing, &(struct timeval) { - outgoing->timeout, rand() % 100000 + outgoing->timeout, prng(mesh, TIMER_FUDGE) }); logger(mesh, MESHLINK_INFO, "Trying to re-establish outgoing connection in %d seconds", outgoing->timeout);