[dev] [commits] Horde branch master updated. 807ce308a199bb099eba18e853d2d9f94f3a8780

Michael M Slusarz slusarz at horde.org
Mon Oct 22 16:36:46 UTC 2012


Quoting Jan Schneider <jan at horde.org>:

> Zitat von Michael M Slusarz <slusarz at horde.org>:
>
>> 399111b phpdoc; bump up timeframe to be labeled a 'slow' command

Tweak.

>> cac2e79 [mms] Move IMAP mailboxes sorting into new  
>> Horde_Imap_Client_Mailbox_List class.

API bugfix.  Imap_Client methods that return mailboxes need to return  
this object (instead of an array) so that we can potentially add  
further features **without having to break the API every minor  
release**.

>> 0960738 [mms] Remove Horde_Imap_Client_Utils#removeBareNewlines().

API bugfix.  This should have been removed months ago with the switch  
to Horde_Imap_Client_Data_Format_*.

>> e9f9906 [mms] Remove Horde_Imap_Client_Utils#escape().

Same.

>> f960868 [mms] Move IMAP sequence string generation/parsing to the  
>> Horde_Imap_Client_Ids object.

Bugfix - mailbox information could potentially leak into situations  
where only IMAP sequence string is supported.  Regardless, this fixed  
a hackish/BC way this was implemented in Horde_Imap_Client_Base: Base  
objects needed to store the correct Utils **and** Ids class name, when  
this can be accomplished with a single classname.  And this just makes  
about a million times more sense from an API perspective (see below).

>> 4584d5e [mms] Move base subject parsing to new  
>> Horde_Imap_Client_Data_BaseSubject class.

This is a refactor, but it was the only method left in Utils class.   
Move to a properly named class and implement using proper  
OO-techniques.  Used in *1* location outside of Horde_Imap_Client.   
Allows us to get rid of the confusing (and unnecessary) reliance on  
getUtils()/utils in the base object.

>> fcb84dc [mms] Move IMAP/POP URL parsing to new Horde_Imap_Client_Url object.

API Bugfix.  Was implemented this way in 1.x for BC reasons.  NO  
reason not to switch to an object, especially since we now use this  
code outside of Horde_Imap_Client.  Used in *2* locations outside of  
Horde_Imap_Client.

> Please revert. This is far from what's acceptable for bug fixing.  
> This is refactoring.

See above.  These fixes were made *precisely* because I am in release  
mode: they occurred because I am currently stress testing with every  
IMAP server I can get a hold of.  It is precisely these kind of fixes  
that would NEVER occur during development since I have little/no  
incentive to do this kind of comprehensive testing.  These are exactly  
the kind of things that need to be fixed when preparing for a release.  
  Example: I have forced myself to try to install Horde from a clean  
install; this is the basis for all the cleanup I have been doing in  
the install Test classes.

Not to mention I wrote a bunch of additional unit tests to test these changes.

Additionally, I was reviewing the API documentation of this class and  
noticed it had a bunch of calls that are not needed.  I would really  
like to push the Imap Client more in release 2 - as such, the API  
needs to be as clean as possible.  That needs to happen NOW, before  
the API is frozen, as opposed to later.

And I'll prepare you now: there are two nasty issues in Imap_Client  
with the way we handle EXPUNGE/VANISHED responses and with a race  
condition in QRESYNC (see  
http://tools.ietf.org/id/draft-kundrat-qresync-arrived-00.html).  This  
is requiring a rewrite of how we handle sequence->UID mappings, and it  
is not an easy or trivial fix.  But it needs to be done or else  
messages CAN be lost in the mailbox when using caching - and will  
NEVER be seen unless the cache is deleted.

michael

___________________________________
Michael Slusarz [slusarz at horde.org]



More information about the dev mailing list