Fixed mbox corruption in some cases where it wrote headers over beginning of message body. Fixed recent flags to work correctly with mbox. Fixed LSUB command to send LSUB replies instead of LIST replies.
Then there's NTLM support from Andrey (which I hopefully didn't break) and dovecotpw utility from Joshua.
And then some generic status report:
For last few weeks I've been trying to make all network I/O non-blocking but that work is going quite slowly. This means that IMAP and POP3 commands which send lots of data to client must be able to stop processing if output buffer is getting full and continue later. Not very difficult, but a bit boring to implement..
This would allow in future to make a single process handle multiple IMAP connections for same user. Although that might not be such a good idea since there's still lock waits and SEARCH command can take a long time..
Anyway, it makes the code less kludgy. Maybe in future we'll have non-blocking lock waits and file I/O too. Adding some support for threading might not be a bad idea either, as long as it doesn't require adding locks all over the place (threads would perform searches, threading, sorting, etc.).
Oh, and another thing it enables is processing multiple commands simultaneously. IMAP supports that, although I don't know if any clients do it. So for example a client could send:
1 fetch 1:* envelope 2 status mailbox (unseen)
Then Dovecot would process the fetch command until it's output blocks, then it would send the status reply in the middle of it and then again continue the fetching. The nice thing with this is that client can do some "urgent" requests in the middle of some long running commands without the need to create multiple connections to server.