From 51a4b58a02e35d7a068c7286451bd4fbdf2ac433 Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Thu, 11 Jul 2013 10:38:45 +0200 Subject: [PATCH] Added support for literal strings in LIST response. fixes #442 --- modoboa/extensions/webmail/imaputils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modoboa/extensions/webmail/imaputils.py b/modoboa/extensions/webmail/imaputils.py index 382dc38ab..6c5a87c36 100644 --- a/modoboa/extensions/webmail/imaputils.py +++ b/modoboa/extensions/webmail/imaputils.py @@ -139,6 +139,7 @@ class IMAPconnector(object): __metaclass__ = ConnectionsManager list_base_pattern = r'\((?P.*?)\) "(?P.*)" "(?P[^"]*)"' + list_response_pattern_literal = re.compile(r'\((?P.*?)\) "(?P.*)" \{(?P\d+)\}') list_response_pattern = re.compile(list_base_pattern) listextended_response_pattern = \ re.compile(list_base_pattern + r'\s*(?P.*)') @@ -395,8 +396,14 @@ class IMAPconnector(object): resp = self._cmd("LIST", "", pattern, "RETURN", "(CHILDREN)") newmboxes = [] for mb in resp: - flags, delimiter, name, childinfo = \ - self.listextended_response_pattern.match(mb).groups() + if not mb: + continue + if type(mb) in [str, unicode]: + flags, delimiter, name, childinfo = \ + self.listextended_response_pattern.match(mb).groups() + else: + flags, delimiter, namelen = self.list_response_pattern_literal.match(mb[0]).groups() + name = mb[1][0:int(namelen)] flags = flags.split(' ') name = name.decode("imap4-utf-7") mdm_found = False