On Sun, 2007-06-03 at 16:29 +0100, Ross Burton wrote:
My poor laptop is running a IMAP server, a HTTP server and a SMTP server.
This fixes it for imap/pop3-login: http://hg.dovecot.org/dovecot/rev/0021765627f3
Sweet, although this still wakes up when there are clients connected right?
Right.
struct idle_timeout *idle_timeout_new(unsigned int secs, timeout_callback_t *callback, void *context); void idle_timeout_free(struct idle_timeout *idle); void idle_timeout_reset(struct idle_timeout *idle);
The code would internally keep just one timeout handler and whenever it's called, calculate the new time when it should be called.
Sounds like what GLib does. Glib also (in 2.13 onwards) lets you create timeouts with second-resolution, so that N timers that go off at roughly the same time do actually go off at the same time, meaning the application wakes up once instead of N times.
Sounds like a good idea. I guess this could be implemented to Dovecot too.
I presume porting Dovecot to use the glib main loop abstraction (which is nice and lean, the object system is a separate library) is out of the question?
I've used GLib before. The biggest problem I see with it is that it doesn't support memory pools. That's why I duplicated most of its useful functionality originally instead of just using it directly. So I think it's much better to fix Dovecot's main loop code to work better instead of adding a dependency to GLib and using only a tiny part of it.