]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-common: Log how many seconds host has been down
authorAki Tuomi <aki.tuomi@open-xchange.com>
Wed, 22 May 2024 06:35:23 +0000 (09:35 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 3 Jun 2024 20:26:45 +0000 (20:26 +0000)
src/login-common/login-proxy.c

index 5c464139bc337815e2664d044e97c7c674200e24..493c2e5a765e19fb5912d30490fd85281634595b 100644 (file)
@@ -414,16 +414,19 @@ static int login_proxy_connect(struct login_proxy *proxy)
                   the check below. */
                rec->last_success.tv_sec = ioloop_timeval.tv_sec - 1;
        }
+       int down_secs = 0;
+       if (timeval_cmp(&rec->last_failure, &rec->last_success) > 0)
+               down_secs = timeval_diff_msecs(&rec->last_failure,
+                                              &rec->last_success) / 1000;
        if (proxy->host_immediate_failure_after_secs != 0 &&
-           timeval_cmp(&rec->last_failure, &rec->last_success) > 0 &&
-           (unsigned int)(rec->last_failure.tv_sec - rec->last_success.tv_sec) >
-               proxy->host_immediate_failure_after_secs &&
+           down_secs > (int)proxy->host_immediate_failure_after_secs &&
            rec->num_waiting_connections > 1) {
                /* the server is down. fail immediately */
                proxy->disable_reconnect = TRUE;
                login_proxy_failed(proxy, proxy->event,
                                   LOGIN_PROXY_FAILURE_TYPE_CONNECT,
-                                  "Host is down");
+                                  t_strdup_printf("Host has been down for %d secs (last success was %"PRIdTIME_T")",
+                                                  down_secs, rec->last_success.tv_sec));
                return -1;
        }