Today I've reached a major milestone in the multifoo rewrite.
For those of you who don't know what I mean by multifoo; It's a term that was coined (afaik) by Aaron Stone to describe a server design for dbmail with multi-plexed asynchronous network IO and multi-threaded command processing.
Last week I found a pattern to make all IMAP commands run in the thread-pool to keep them from blocking the main thread. But somehow I kept being bitten by heisenbugs which made me have to reconsider. Last night however I had an epiphany; there were still some calls used while running in the threadpool that send data over the network. The bug was quickly fixed today, and my design saved. Imaptest now doesn't generate anymore errors, and basic message browsing works using thunderbird.
I can now start testing more fat clients such as thunderbird and outlook against what should become a release candidate for 2.3.3. Looking very good indeed.