commit f2137b684220e68f19491975b9b500ee080a22f6
Author: Oswald Buddenhagen <[email protected]>
Date: Sat Jul 27 15:32:49 2013 +0200
allow the mailbox names in LIST responses to be literals
Lotus Domino seems to send them like that.
src/drv_imap.c | 30 ++++++++++++++++++++++++------
1 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/src/drv_imap.c b/src/drv_imap.c
index c5bb7f3..b3a4bac 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -881,12 +881,13 @@ parse_response_code( imap_store_t *ctx, struct imap_cmd
*cmd, char *s )
return RESP_OK;
}
+static int parse_list_rsp_p2( imap_store_t *, list_t *, char * );
+
static int
parse_list_rsp( imap_store_t *ctx, list_t *list, char *cmd )
{
char *arg;
list_t *lp;
- int l;
if (!list) {
error( "IMAP error: malformed LIST response\n" );
@@ -902,25 +903,42 @@ parse_list_rsp( imap_store_t *ctx, list_t *list, char
*cmd )
arg = next_arg( &cmd );
if (!ctx->delimiter)
ctx->delimiter = *arg;
- arg = next_arg( &cmd );
+ return parse_list( ctx, cmd, parse_list_rsp_p2 );
+}
+
+static int
+parse_list_rsp_p2( imap_store_t *ctx, list_t *list, char *cmd )
+{
+ char *arg;
+ int l;
+
+ (void)cmd;
+ if (!is_atom( list )) {
+ error( "IMAP error: malformed LIST response\n" );
+ free_list( list );
+ return LIST_BAD;
+ }
+ arg = list->val;
if (memcmp( arg, "INBOX", 5 ) || (arg[5] && arg[5] != ctx->delimiter)) {
l = strlen( ctx->gen.conf->path );
if (memcmp( arg, ctx->gen.conf->path, l ))
- return LIST_OK;
+ goto skip;
arg += l;
if (!memcmp( arg, "INBOX", 5 ) && (!arg[5] || arg[5] ==
ctx->delimiter)) {
if (!arg[5])
warn( "IMAP warning: ignoring INBOX in %s\n",
ctx->gen.conf->path );
- return LIST_OK;
+ goto skip;
}
}
if (!memcmp( arg + strlen( arg ) - 5, ".lock", 5 )) /* workaround
broken servers */
- return LIST_OK;
+ goto skip;
if (map_name( arg, ctx->delimiter, '/') < 0) {
warn( "IMAP warning: ignoring mailbox %s (reserved character
'/' in name)\n", arg );
- return LIST_OK;
+ goto skip;
}
add_string_list( &ctx->gen.boxes, arg );
+ skip:
+ free_list( list );
return LIST_OK;
}
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
isync-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/isync-devel