]> granicus.if.org Git - libevent/commit
Fix a warn-and-fail bug in kqueue by providing kevent() room to report errors
authorNick Mathewson <nickm@torproject.org>
Tue, 3 May 2011 17:54:57 +0000 (13:54 -0400)
committerNick Mathewson <nickm@torproject.org>
Tue, 3 May 2011 17:54:57 +0000 (13:54 -0400)
commit28317a087e58dceff85a448c22bbbafebed0b6ab
tree560f7280284a607abb2f28a801b7ae9a99a14c21
parent9556a7d1f647f61634fb782ae7ba814e5a20535e
Fix a warn-and-fail bug in kqueue by providing kevent() room to report errors

Apparently, kevent fails gracefully if there is not enough space in its
output events array to report every _event_... but it just dies and returns
-1 if there is not enough space to report every _error_.

There are a couple of possible fixes here.  One would to handle -1
returns from kevent better by re-growing the array and retrying... but
that seems a little error prone.  Instead, I'm just going to say that
the events array must be large enough to handle all the errors.

This patch also adds a unit test designed to make sure that our
many-events-out code works even if not all the events are added at
once.
kqueue.c
test/regress.c