[Dovecot] 1.0-test75 and roadmap for v1.0

Dominic Marks dom at goodforbusiness.co.uk
Tue Jul 12 18:07:49 EEST 2005


On Sunday 03 July 2005 23:01, Dominic Marks wrote:
> On Sunday 03 July 2005 22:49, Timo Sirainen wrote:
> > On 1.7.2005, at 02:55, Dominic Marks wrote:
> > > Any chance of kqueue support for us BSD users? I think the diff
> > > I have could probably be the basis of support for it.
> >
> > Could you fix the XXX part of it? There are no longer any
> > priorities in I/O loop so it could be made faster I think?

I had a crack at this, but I couldn't get things working right.
I'll keep on fiddling with it.

> Sure.
>
> > Also what exactly do you mean with this:
> >
> > 		 * changing this to i_fatal is debatable, however
> > 		 * if you do so you will potentially expose the case
> > 		 * where a process receives the client from a socket
> > 		 * then closes the listening socket, experiences an
> > 		 * error and calls exit, dropping the client we just
> > 		 * picked up
> >
> > io_loop_handle_remove() should always be called before close(), so
> > kevent() should never fail. What am I missing?

Seems to be the other way around, since I can work around the
warning by using fstat to check if the descriptor is in use. I
currently have this:

if (kevent(data->kq, &data->event, 1, NULL, 0, NULL) < 0) {
	if (fstat(fd, NULL) == 0) {
	 /*
          * Trying to remove filters on a closed descriptor
          * will cause kevent(2) to return an error. If we
          * sure that descriptors are ALWAYS closed before
          * this function we can delete the entire function
          * body.
          */
        	i_warning("couldn't remove filter on fd %d with kqueue: %m", fd);
        }
}

> I'll investigate, and see what I can come up with.
>
> Cheers,

Thanks,
-- 
Dominic Marks



More information about the dovecot mailing list