Add reconnection interval support

This commit is contained in:
Alex D. 2020-10-26 21:41:58 +01:00
parent 6cd15183e8
commit 5bcbfe640b
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
1 changed files with 7 additions and 0 deletions

View File

@ -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;