From: Karl Fleischmann Date: Thu, 29 Feb 2024 11:58:34 +0000 (+0100) Subject: lib-imap-client: Differentiate time settings in imap client settings X-Git-Tag: 2.4.1~814 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12bf82030cbb00e3a9a63585ad36fe7955098e6b;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Differentiate time settings in imap client settings --- diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 26f378ed99..fc12e5180d 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -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; iips_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); } } diff --git a/src/lib-imap-client/imapc-settings.c b/src/lib-imap-client/imapc-settings.c index babd67980f..a4a9b41591 100644 --- a/src/lib-imap-client/imapc-settings.c +++ b/src/lib-imap-client/imapc-settings.c @@ -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; } diff --git a/src/lib-imap-client/imapc-settings.h b/src/lib-imap-client/imapc-settings.h index bf7d468525..e3f3c70695 100644 --- a/src/lib-imap-client/imapc-settings.h +++ b/src/lib-imap-client/imapc-settings.h @@ -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; diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 0b5d9da6d2..fdd9daf13f 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -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);