commit ef0e7fdd3e921d612220a830436bb9862bca61ac
Author: Oswald Buddenhagen <o...@users.sf.net>
Date:   Sun Dec 4 11:23:47 2016 +0100

    accept NAMESPACE responses without hierarchy delimiter
    
    RFC2342 states that the delimiter may be NIL, which some servers
    apparently actually make use of.
    
    REFMAIL: CAM0xXk_FQ83CPrd37iQCMKtc1B2P8=u-r5jx0n2we5y+348...@mail.gmail.com

 src/drv_imap.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c
index f15bc5b..83b0358 100644
--- a/src/drv_imap.c
+++ b/src/drv_imap.c
@@ -638,6 +638,12 @@ next_arg( char **ps )
 }
 
 static int
+is_opt_atom( list_t *list )
+{
+       return list && list->val && list->val != LIST;
+}
+
+static int
 is_atom( list_t *list )
 {
        return list && list->val && list->val != NIL && list->val != LIST;
@@ -850,7 +856,7 @@ parse_namespace_check( list_t *list )
                        goto bad;
                if (!is_atom( list->child ))
                        goto bad;
-               if (!is_atom( list->child->next ))
+               if (!is_opt_atom( list->child->next ))
                        goto bad;
                /* Namespace response extensions may follow here; we don't 
care. */
        }
@@ -2147,17 +2153,17 @@ static void
 imap_open_store_namespace2( imap_store_t *ctx )
 {
        imap_store_conf_t *cfg = (imap_store_conf_t *)ctx->gen.conf;
-       list_t *nsp, *nsp_1st, *nsp_1st_ns, *nsp_1st_dl;
+       list_t *nsp, *nsp_1st;
 
        /* XXX for now assume 1st personal namespace */
        if (is_list( (nsp = ctx->ns_personal) ) &&
-           is_list( (nsp_1st = nsp->child) ) &&
-           is_atom( (nsp_1st_ns = nsp_1st->child) ) &&
-           is_atom( (nsp_1st_dl = nsp_1st_ns->next) ))
+           is_list( (nsp_1st = nsp->child) ))
        {
+               list_t *nsp_1st_ns = nsp_1st->child;
+               list_t *nsp_1st_dl = nsp_1st_ns->next;
                if (!ctx->prefix && cfg->use_namespace)
                        ctx->prefix = nsp_1st_ns->val;
-               if (!ctx->delimiter)
+               if (!ctx->delimiter && is_atom( nsp_1st_dl ))
                        ctx->delimiter = nfstrdup( nsp_1st_dl->val );
        }
        imap_open_store_finalize( ctx );

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
isync-devel mailing list
isync-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/isync-devel
  • Exits after NAMESPACE Satoru KURASHIKI
    • [commit] 1.2: accept NAMESPACE responses without h... Oswald Buddenhagen

Reply via email to