commit ffe872f1cf741ae9e4a97ce1f7d21026427e28bf Author: Oswald Buddenhagen <o...@kde.org> Date: Sun Mar 27 16:58:23 2011 +0200
make IMAP pipeline depth configurable currently, this affects only "clustered" message listings and flag stores. src/drv_imap.c | 11 +++++++++-- src/mbsync.1 | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/drv_imap.c b/src/drv_imap.c index 8b3b98d..779b5ec 100644 --- a/src/drv_imap.c +++ b/src/drv_imap.c @@ -40,6 +40,7 @@ typedef struct imap_server_conf { server_conf_t sconf; char *user; char *pass; + int max_in_progress; #ifdef HAVE_LIBSSL unsigned require_ssl:1; unsigned require_cram:1; @@ -67,7 +68,6 @@ typedef struct _list { } list_t; struct imap_cmd; -#define max_in_progress 50 /* make this configurable? */ typedef struct imap_store { store_t gen; @@ -396,7 +396,7 @@ drain_imap_replies( imap_store_t *ctx ) static int process_imap_replies( imap_store_t *ctx ) { - while (ctx->num_in_progress > max_in_progress || + while (ctx->num_in_progress > ((imap_store_conf_t *)ctx->gen.conf)->server->max_in_progress || socket_pending( &ctx->conn )) if (get_cmd_result( ctx, 0 ) == RESP_CANCEL) return RESP_CANCEL; @@ -1724,6 +1724,7 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep, int *err ) server->require_ssl = 1; server->sconf.use_tlsv1 = 1; #endif + server->max_in_progress = 50; while (getcline( cfg ) && cfg->cmd) { if (!strcasecmp( "Host", cfg->cmd )) { @@ -1750,6 +1751,12 @@ imap_parse_store( conffile_t *cfg, store_conf_t **storep, int *err ) server->pass = nfstrdup( cfg->val ); else if (!strcasecmp( "Port", cfg->cmd )) server->sconf.port = parse_int( cfg ); + else if (!strcasecmp( "PipelineDepth", cfg->cmd )) { + if ((server->max_in_progress = parse_int( cfg )) < 1) { + error( "%s:%d: PipelineDepth must be at least 1\n", cfg->file, cfg->line ); + *err = 1; + } + } #ifdef HAVE_LIBSSL else if (!strcasecmp( "CertificateFile", cfg->cmd )) { server->sconf.cert_file = expand_strdup( cfg->val ); diff --git a/src/mbsync.1 b/src/mbsync.1 index 04c458b..4f47668 100644 --- a/src/mbsync.1 +++ b/src/mbsync.1 @@ -277,6 +277,15 @@ Use SSLv3 for communication with the IMAP server over SSL? Use TLSv1 for communication with the IMAP server over SSL? (Default: \fIyes\fR) .. +.TP +\fBPipelineDepth\fR \fIdepth\fR +Maximum number of IMAP commands which can be simultaneously in flight. +Setting this to \fI1\fR disables pipelining. +Setting it to a too big value may deadlock isync. +Currently, this affects only a few commands. +This is mostly a debugging only option. +(Default: \fI50\fR) +.. .SS IMAP Stores The reference point for relative \fBPath\fRs is whatever the server likes it to be; probably the user's $HOME or $HOME/Mail on that server. The location ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ isync-devel mailing list isync-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/isync-devel