]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
login-proxy: Add login_proxy_max_reconnects setting
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 6 May 2020 13:18:12 +0000 (16:18 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 25 May 2020 08:38:55 +0000 (08:38 +0000)
src/login-common/login-proxy.c
src/login-common/login-settings.c
src/login-common/login-settings.h

index 7bd32a6dff0c42902566f50bbf23fc0ee37b21fa..53b34b71bfd3ceb7b88d918be2723adab2240bd6 100644 (file)
@@ -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)
index f51a2a50deafeb9d4082e496f13ff32208706d77..d503a4a4d66e602e45ac546699839373250d00af 100644 (file)
@@ -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",
 
index a8069a8cc690358ae0b38d204df7db4409c58049..0b7dfad73c25cfa01df569b5fe7399746874bb5c 100644 (file)
@@ -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;