[Evolution] IMAP rewrite



I remember reading something of IMAP rewrite, how far did that get? Is
there still a chance of getting that soon?

I'm thinking of fixing the IMAP code myself soon, unless there's some
larger changes coming out soon. Was there some plans to change the Camel
API? I remember reading something about it.. Anyway, what I want fixed:

- Currently it's just "write command", "wait for reply". It should
rather be waiting for IMAP replies all the time. Server can send them at
any point, Evolution actually breaks currently if that's done before
APPEND. I want to use my server's ability to notify of new mails
_immediately_ after they come to selected mailbox.

- Send the flag changes to the server immediately. I think it now waits
until closing the folder. Also keep the flags synced with the server all
the time, if I change them elsewhere I expect Evolution to update them
internally as well.

- Labels should be sent to server using custom message flags, assuming
the server supports them.

- If IMAP connection hangs to one server, it shouldn't affect the rest
of them. And in general there seems to be several annoying problems when
one or all connections die, I just can't remember what exactly now. Oh,
and send NOOP to server once in a while, if it can't get a reply soon,
reconnect (to work around hanged TCP connections). If server kills the
connection, silently reconnect instead of complaining.

- All other kind of smaller things that don't come to my mind right now.
As an author of IMAP server, I hate seeing almost all clients implement
it wrong or badly. One of my main motivations to get the thing written
was to be able to use Evolution.

So .. Any comments on how easy it would be to fix the problems above? I
haven't studied too deeply Evolution's code yet. The first thing worries
me a bit as it might require larger changes.. How is the IMAP code run
now? Is it in it's own thread? Or is it just called whenever something
is clicked and it blocks while waiting for reply? Could I just register
the connections fds into GLIB's main loop and make the code asynchronous
in general?



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]