dovecot-2.1: imapc: Added imapc_max_idle_time setting to force a...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Aug 14 23:11:04 EEST 2012
details: http://hg.dovecot.org/dovecot-2.1/rev/f33e3ac28e1d
changeset: 14668:f33e3ac28e1d
user: Timo Sirainen <tss at iki.fi>
date: Tue Aug 14 23:09:44 2012 +0300
description:
imapc: Added imapc_max_idle_time setting to force activity on connection.
Reducing this from the default 29 minutes should help when there's a
stateful firewall between imapc and the backend server.
diffstat:
src/lib-imap-client/imapc-client.h | 1 +
src/lib-imap-client/imapc-connection.c | 4 +---
src/lib-storage/index/imapc/imapc-settings.c | 4 ++++
src/lib-storage/index/imapc/imapc-settings.h | 2 ++
src/lib-storage/index/imapc/imapc-storage.c | 1 +
5 files changed, 9 insertions(+), 3 deletions(-)
diffs (76 lines):
diff -r 7a1f49b588a8 -r f33e3ac28e1d src/lib-imap-client/imapc-client.h
--- a/src/lib-imap-client/imapc-client.h Tue Aug 14 03:03:26 2012 +0300
+++ b/src/lib-imap-client/imapc-client.h Tue Aug 14 23:09:44 2012 +0300
@@ -52,6 +52,7 @@
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;
diff -r 7a1f49b588a8 -r f33e3ac28e1d src/lib-imap-client/imapc-connection.c
--- a/src/lib-imap-client/imapc-connection.c Tue Aug 14 03:03:26 2012 +0300
+++ b/src/lib-imap-client/imapc-connection.c Tue Aug 14 23:09:44 2012 +0300
@@ -24,8 +24,6 @@
#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,
@@ -1306,7 +1304,7 @@
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,
diff -r 7a1f49b588a8 -r f33e3ac28e1d src/lib-storage/index/imapc/imapc-settings.c
--- a/src/lib-storage/index/imapc/imapc-settings.c Tue Aug 14 03:03:26 2012 +0300
+++ b/src/lib-storage/index/imapc/imapc-settings.c Tue Aug 14 23:09:44 2012 +0300
@@ -28,6 +28,8 @@
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
@@ -48,6 +50,8 @@
.imapc_features = "",
.imapc_rawlog_dir = "",
.imapc_list_prefix = "",
+ .imapc_max_idle_time = 60*29,
+
.ssl_crypto_device = ""
};
diff -r 7a1f49b588a8 -r f33e3ac28e1d src/lib-storage/index/imapc/imapc-settings.h
--- a/src/lib-storage/index/imapc/imapc-settings.h Tue Aug 14 03:03:26 2012 +0300
+++ b/src/lib-storage/index/imapc/imapc-settings.h Tue Aug 14 23:09:44 2012 +0300
@@ -23,6 +23,8 @@
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;
diff -r 7a1f49b588a8 -r f33e3ac28e1d src/lib-storage/index/imapc/imapc-storage.c
--- a/src/lib-storage/index/imapc/imapc-storage.c Tue Aug 14 03:03:26 2012 +0300
+++ b/src/lib-storage/index/imapc/imapc-storage.c Tue Aug 14 23:09:44 2012 +0300
@@ -228,6 +228,7 @@
*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, "/",
More information about the dovecot-cvs
mailing list