From 5bcbfe640baf314cc743651bea7d1df83f57dbaf Mon Sep 17 00:00:00 2001 From: Alex Denes Date: Mon, 26 Oct 2020 21:41:58 +0100 Subject: [PATCH] Add reconnection interval support --- src/main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main.c b/src/main.c index 96b7c7a..3857dc4 100644 --- a/src/main.c +++ b/src/main.c @@ -153,6 +153,12 @@ int run_main(Connection* conn, char* quitmsg, unsigned int timeout) close(sendbuf.fd); close(fifobuf.fd); conn->state = CONN_PENDING; + if (reconinter == 0) + reconinter = 10; + else if (reconinter > 300) + reconinter = 300; + else + reconinter *= 2; continue; } else if (conn->state == CONN_PENDING) { if (ctime - conn->lastconnect < reconinter) continue; @@ -217,6 +223,7 @@ int run_main(Connection* conn, char* quitmsg, unsigned int timeout) continue; } } else if (conn->state == CONN_ACTIVE) { + reconinter = 0; if (conn->lastmessage < ctime - timeout && conn->lastpong < conn->lastping - timeout) { LOG(LOG_WARN, "Server " ADDRFMT " didn't respond to a PING in time.", conn->data.addr, conn->data.port); conn->state = CONN_RECONNECTING;