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