[dev] Performance issues with IMP git

Jan Schneider jan at horde.org
Thu Jan 8 22:04:22 UTC 2009


Zitat von Michael M Slusarz <slusarz at horde.org>:

> Quoting Jan Schneider <jan at horde.org>:
>
>> S (1231438991,2811): * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID
>> STARTTLS AUTH=PLAIN SASL-IR] neo Cyrus IMAP4 v2.3.11 server ready
>> C (1231438991,2817): 1 AUTHENTICATE PLAIN
>
> Looking at this a bit deeper, another issue is why SASL-IR  
> authentication is not being used?  If SASL-IR is supported, we  
> should be sending a '1 AUTHENTICATE PLAIN *AUTHDATA*' request.
>
> A-ha.  Looks like the issue has to do with caching of the capability  
> string.  Reading the RFC's, it is clear that the server does not  
> have to send a full list of capabilities before the user is  
> authenticated.  If this is the case, the server MUST send the full  
> list once authenticated.  However, it is a bit unclear whether this  
> full capability list must include ALL capabilities of the server (as  
> every IMAP server I know of except Cyrus does) or only a list of  
> capabilities not associated with authentication (as Cyrus does).   
> Even though I think the way Cyrus does it is incorrect, that is  
> irrelevant for purposes of writing a client to interact.
>
> So once we login, and Cyrus automatically sends the capability list  
> as part of the response to the authentication list, we grab this  
> list because we are assuming it to be the full list.  When the Imap  
> ob is cached, this is the list that is used the next time it is  
> unserialized.  We ignore the capability list given by the server on  
> initial connect (since we already have the list of capabilities).   
> Since the list doesn't include SASL-IR, this is why we default to  
> regular authentication mode.  Still doesn't explain why the server  
> is hanging there, but solves the issue why SASL-IR is not being used.
>
> This would explain why the test script works fine but IMP doesn't  
> (due to the serialization).  Try the fix I just committed to  
> Socket.php.

Yes, that did it. SASL-IR is now used, thus no continuation, thus no delay.

Jan.

-- 
Do you need professional PHP or Horde consulting?
http://horde.org/consulting/



More information about the dev mailing list