Hello,
What has changed from test77 to test78 in the way imap manages its descriptors? I upgraded to test78 this morning on a small site which I use as a testbed for testing various things.
Running the same copy of my kqueue patch with test77 works quite well [*], with test78 imap has some problems. Here is some debugging output I recorded:
Jul 14 12:55:27 egg dovecot: imap-login: Login: user=<dom>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, SSL Jul 14 12:55:30 egg dovecot: IMAP(dom): kqueue was given an unknown descriptor 1, -1: No such file or directory
The second line points refers to io_loop_handler_remove, the tcp/ip socket (1) is having the read filter (-1) removed, suspending events from the socket, or at least, that is what should be happening.
From kevent(2) for ENOENT:
[ENOENT] The event could not be found to be modified or deleted.
This suggests to me that we are incorrectly calling io_loop_handler_remove before we should. This error happens immediately after a client opens their mailbox.
I have checked pop3 and it does not share the problem. I'm going to have a look at the CVS mail archive to see if I can work out what has changed.
[*] Occasionally I was receiving ENOENT in test77 also in io_loop_handler_remove, but only occasionally, perhaps a few times a day for each client. This also didn't occur when opening the mailbox, but some time later. I'm still looking for the trigger for that.
Cheers,
Dominic Marks