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;