From: Timo Sirainen Date: Wed, 6 May 2020 13:18:12 +0000 (+0300) Subject: login-proxy: Add login_proxy_max_reconnects setting X-Git-Tag: 2.3.13~692 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c729f548d3890122cc38cec4538d7672882f0fce;p=thirdparty%2Fdovecot%2Fcore.git login-proxy: Add login_proxy_max_reconnects setting --- diff --git a/src/login-common/login-proxy.c b/src/login-common/login-proxy.c index 7bd32a6dff..53b34b71bf 100644 --- a/src/login-common/login-proxy.c +++ b/src/login-common/login-proxy.c @@ -217,6 +217,9 @@ static bool proxy_try_reconnect(struct login_proxy *proxy) { int since_started_msecs, left_msecs; + if (proxy->reconnect_count >= proxy->client->set->login_proxy_max_reconnects) + return FALSE; + since_started_msecs = timeval_diff_msecs(&ioloop_timeval, &proxy->created); if (since_started_msecs < 0) diff --git a/src/login-common/login-settings.c b/src/login-common/login-settings.c index f51a2a50de..d503a4a4d6 100644 --- a/src/login-common/login-settings.c +++ b/src/login-common/login-settings.c @@ -30,6 +30,7 @@ static const struct setting_define login_setting_defines[] = { DEF(SET_STR, login_plugin_dir), DEF(SET_STR, login_plugins), DEF(SET_TIME_MSECS, login_proxy_timeout), + DEF(SET_UINT, login_proxy_max_reconnects), DEF(SET_TIME, login_proxy_max_disconnect_delay), DEF(SET_STR, director_username_hash), @@ -57,6 +58,7 @@ static const struct login_settings login_default_settings = { .login_plugin_dir = MODULEDIR"/login", .login_plugins = "", .login_proxy_timeout = 30*1000, + .login_proxy_max_reconnects = 3, .login_proxy_max_disconnect_delay = 0, .director_username_hash = "%u", diff --git a/src/login-common/login-settings.h b/src/login-common/login-settings.h index a8069a8cc6..0b7dfad73c 100644 --- a/src/login-common/login-settings.h +++ b/src/login-common/login-settings.h @@ -13,6 +13,7 @@ struct login_settings { const char *login_plugin_dir; const char *login_plugins; unsigned int login_proxy_timeout; + unsigned int login_proxy_max_reconnects; unsigned int login_proxy_max_disconnect_delay; const char *director_username_hash;