const char *master_user;
const char *username;
const char *password;
+ unsigned int max_idle_time;
const char *dns_client_socket_path;
const char *temp_path_prefix;
#define IMAPC_CONNECT_TIMEOUT_MSECS (1000*30)
#define IMAPC_COMMAND_TIMEOUT_MSECS (1000*60*5)
#define IMAPC_MAX_INLINE_LITERAL_SIZE (1024*32)
-/* IMAP protocol requires activity at least every 30 minutes */
-#define IMAPC_MAX_IDLE_MSECS (1000*60*29)
enum imapc_input_state {
IMAPC_INPUT_STATE_NONE = 0,
conn->parser = imap_parser_create(conn->input, NULL, (size_t)-1);
conn->to = timeout_add(IMAPC_CONNECT_TIMEOUT_MSECS,
imapc_connection_timeout, conn);
- conn->to_output = timeout_add(IMAPC_MAX_IDLE_MSECS,
+ conn->to_output = timeout_add(conn->client->set.max_idle_time*1000,
imapc_connection_reset_idle, conn);
if (conn->client->set.debug) {
i_debug("imapc(%s): Connecting to %s:%u", conn->name,
DEF(SET_STR, imapc_features),
DEF(SET_STR, imapc_rawlog_dir),
DEF(SET_STR, imapc_list_prefix),
+ DEF(SET_TIME, imapc_max_idle_time),
+
DEF(SET_STR, ssl_crypto_device),
SETTING_DEFINE_LIST_END
.imapc_features = "",
.imapc_rawlog_dir = "",
.imapc_list_prefix = "",
+ .imapc_max_idle_time = 60*29,
+
.ssl_crypto_device = ""
};
const char *imapc_features;
const char *imapc_rawlog_dir;
const char *imapc_list_prefix;
+ unsigned int imapc_max_idle_time;
+
const char *ssl_crypto_device;
enum imapc_features parsed_features;
*error_r = "missing imapc_password";
return -1;
}
+ set.max_idle_time = storage->set->imapc_max_idle_time;
set.dns_client_socket_path =
*_storage->user->set->base_dir == '\0' ? "" :
t_strconcat(_storage->user->set->base_dir, "/",