]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-imap-client: Differentiate time settings in imap client settings
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Thu, 29 Feb 2024 11:58:34 +0000 (12:58 +0100)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:39:59 +0000 (10:39 +0200)
src/lib-imap-client/imapc-connection.c
src/lib-imap-client/imapc-settings.c
src/lib-imap-client/imapc-settings.h
src/lib-storage/index/imapc/imapc-storage.c

index 26f378ed990aa6c373c009866847ba6746400dd3..fc12e5180d070f4d1e8e881a45b36767f5443d98 100644 (file)
@@ -1729,7 +1729,7 @@ static int imapc_connection_connected(struct imapc_connection *conn)
                imapc_connection_try_reconnect(conn, t_strdup_printf(
                        "connect(%s, %u) failed: %s",
                        net_ip2addr(ip), conn->client->set->imapc_port,
-                       strerror(err)), conn->client->set->imapc_connection_retry_interval, TRUE);
+                       strerror(err)), conn->client->set->imapc_connection_retry_interval_msecs, TRUE);
                return -1;
        }
        if (net_getsockname(conn->fd, &local_ip, &local_port) < 0)
@@ -1760,12 +1760,12 @@ static void imapc_connection_timeout(struct imapc_connection *conn)
        case IMAPC_CONNECTION_STATE_CONNECTING:
                errstr = t_strdup_printf("connect(%s, %u) timed out after %u seconds",
                        net_ip2addr(ip), conn->client->set->imapc_port,
-                       conn->client->set->imapc_connection_timeout_interval/1000);
+                       conn->client->set->imapc_connection_timeout_interval_msecs/1000);
                connect_error = TRUE;
                break;
        case IMAPC_CONNECTION_STATE_AUTHENTICATING:
                errstr = t_strdup_printf("Authentication timed out after %u seconds",
-                       conn->client->set->imapc_connection_timeout_interval/1000);
+                       conn->client->set->imapc_connection_timeout_interval_msecs/1000);
                break;
        default:
                i_unreached();
@@ -1809,7 +1809,7 @@ static void imapc_connection_connect_next_ip(struct imapc_connection *conn)
        unsigned int i;
        int fd;
 
-       i_assert(conn->client->set->imapc_max_idle_time > 0);
+       i_assert(conn->client->set->imapc_max_idle_time_secs > 0);
 
        for (i = 0; i<conn->ips_count;) {
                conn->prev_connect_idx = (conn->prev_connect_idx+1) % conn->ips_count;
@@ -1826,7 +1826,7 @@ static void imapc_connection_connect_next_ip(struct imapc_connection *conn)
                        net_ip2addr(ip), conn->client->set->imapc_port);
                if (conn->prev_connect_idx+1 == conn->ips_count) {
                        imapc_connection_try_reconnect(conn, error,
-                               conn->client->set->imapc_connection_retry_interval, TRUE);
+                               conn->client->set->imapc_connection_retry_interval_msecs, TRUE);
                        return;
                }
                e_error(conn->event, "%s", error);
@@ -1851,9 +1851,9 @@ static void imapc_connection_connect_next_ip(struct imapc_connection *conn)
                                    conn);
        conn->parser = imap_parser_create(conn->input, NULL,
                                          conn->client->set->imapc_max_line_length);
-       conn->to = timeout_add(conn->client->set->imapc_connection_timeout_interval,
+       conn->to = timeout_add(conn->client->set->imapc_connection_timeout_interval_msecs,
                               imapc_connection_timeout, conn);
-       conn->to_output = timeout_add(conn->client->set->imapc_max_idle_time*1000,
+       conn->to_output = timeout_add(conn->client->set->imapc_max_idle_time_secs*1000,
                                      imapc_connection_reset_idle, conn);
        e_debug(conn->event, "Connecting to %s:%u", net_ip2addr(ip),
                conn->client->set->imapc_port);
@@ -1915,7 +1915,7 @@ void imapc_connection_connect(struct imapc_connection *conn)
 
        i_zero(&dns_set);
        dns_set.dns_client_socket_path = conn->client->dns_client_socket_path;
-       dns_set.timeout_msecs = conn->client->set->imapc_connection_timeout_interval;
+       dns_set.timeout_msecs = conn->client->set->imapc_connection_timeout_interval_msecs;
        dns_set.event_parent = conn->event;
 
        imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_CONNECTING);
@@ -2268,7 +2268,7 @@ static void imapc_command_send_more(struct imapc_connection *conn)
                conn->to = timeout_add(IMAPC_LOGOUT_TIMEOUT_MSECS,
                                       imapc_command_timeout, conn);
        } else if (conn->to == NULL) {
-               conn->to = timeout_add(conn->client->set->imapc_cmd_timeout * 1000,
+               conn->to = timeout_add(conn->client->set->imapc_cmd_timeout_secs * 1000,
                                       imapc_command_timeout, conn);
        }
 
@@ -2329,7 +2329,7 @@ static void imapc_connection_send_idle_done(struct imapc_connection *conn)
                o_stream_nsend_str(conn->output, "DONE\r\n");
                if (conn->to == NULL) {
                        conn->to = timeout_add(
-                               conn->client->set->imapc_cmd_timeout * 1000,
+                               conn->client->set->imapc_cmd_timeout_secs * 1000,
                                imapc_command_timeout, conn);
                }
        }
index babd67980f2aa5fb401d531f8e8b562bfc9ef740..a4a9b41591c5575f0ba9a0134207957d03d9a91f 100644 (file)
@@ -8,6 +8,14 @@
 #define DEF(type, name) \
        SETTING_DEFINE_STRUCT_##type(#name, name, struct imapc_settings)
 
+#undef DEF_MSECS
+#define DEF_MSECS(type, name) \
+       SETTING_DEFINE_STRUCT_##type(#name, name##_msecs, struct imapc_settings)
+
+#undef DEF_SECS
+#define DEF_SECS(type, name) \
+       SETTING_DEFINE_STRUCT_##type(#name, name##_secs, struct imapc_settings)
+
 static bool imapc_settings_check(void *_set, pool_t pool, const char **error_r);
 
 static const struct setting_define imapc_setting_defines[] = {
@@ -26,11 +34,11 @@ static const struct setting_define imapc_setting_defines[] = {
        DEF(BOOLLIST, imapc_features),
        DEF(STR, imapc_rawlog_dir),
        DEF(STR, imapc_list_prefix),
-       DEF(TIME, imapc_cmd_timeout),
-       DEF(TIME, imapc_max_idle_time),
-       DEF(TIME_MSECS, imapc_connection_timeout_interval),
+       DEF_SECS(TIME, imapc_cmd_timeout),
+       DEF_SECS(TIME, imapc_max_idle_time),
+       DEF_MSECS(TIME_MSECS, imapc_connection_timeout_interval),
        DEF(UINT, imapc_connection_retry_count),
-       DEF(TIME_MSECS, imapc_connection_retry_interval),
+       DEF_MSECS(TIME_MSECS, imapc_connection_retry_interval),
        DEF(SIZE, imapc_max_line_length),
 
        DEF(STR, pop3_deleted_flag),
@@ -54,11 +62,11 @@ static const struct imapc_settings imapc_default_settings = {
        .imapc_features = ARRAY_INIT,
        .imapc_rawlog_dir = "",
        .imapc_list_prefix = "",
-       .imapc_cmd_timeout = 5*60,
-       .imapc_max_idle_time = IMAPC_DEFAULT_MAX_IDLE_TIME,
-       .imapc_connection_timeout_interval = 1000*30,
+       .imapc_cmd_timeout_secs = 5*60,
+       .imapc_max_idle_time_secs = IMAPC_DEFAULT_MAX_IDLE_TIME,
+       .imapc_connection_timeout_interval_msecs = 1000*30,
        .imapc_connection_retry_count = 1,
-       .imapc_connection_retry_interval = 1000,
+       .imapc_connection_retry_interval_msecs = 1000,
        .imapc_max_line_length = SET_SIZE_UNLIMITED,
 
        .pop3_deleted_flag = "",
@@ -171,7 +179,7 @@ static bool imapc_settings_check(void *_set, pool_t pool ATTR_UNUSED,
 {
        struct imapc_settings *set = _set;
 
-       if (set->imapc_max_idle_time == 0) {
+       if (set->imapc_max_idle_time_secs == 0) {
                *error_r = "imapc_max_idle_time must not be 0";
                return FALSE;
        }
index bf7d468525aabf9cb0b24a36c8b3fe0697bcf969..e3f3c70695cd6092eafd392254538339e955103e 100644 (file)
@@ -49,11 +49,11 @@ struct imapc_settings {
        ARRAY_TYPE(const_string) imapc_features;
        const char *imapc_rawlog_dir;
        const char *imapc_list_prefix;
-       unsigned int imapc_cmd_timeout;
-       unsigned int imapc_max_idle_time;
-       unsigned int imapc_connection_timeout_interval;
+       unsigned int imapc_cmd_timeout_secs;
+       unsigned int imapc_max_idle_time_secs;
+       unsigned int imapc_connection_timeout_interval_msecs;
        unsigned int imapc_connection_retry_count;
-       unsigned int imapc_connection_retry_interval;
+       unsigned int imapc_connection_retry_interval_msecs;
        uoff_t imapc_max_line_length;
 
        const char *pop3_deleted_flag;
index 0b5d9da6d23bd7820365a19fe0f15d56aba319a3..fdd9daf13f581c277184410362ee981415328798 100644 (file)
@@ -426,8 +426,8 @@ imapc_storage_create(struct mail_storage *_storage,
                                                                              ","),
                                                    t_array_const_string_join(&storage->set->imapc_features, ","),
                                                    storage->set->imapc_rawlog_dir,
-                                                   storage->set->imapc_cmd_timeout,
-                                                   storage->set->imapc_max_idle_time,
+                                                   storage->set->imapc_cmd_timeout_secs,
+                                                   storage->set->imapc_max_idle_time_secs,
                                                    (size_t) storage->set->imapc_max_line_length,
                                                    storage->set->pop3_deleted_flag,
                                                    ns->list->mail_set->mail_path);