Fix a mistake in kqueue 'overflow' handling.
If there is no space in the output buffer to report an error adding to the kqueue, kevent(2) will abort and return the error in errno (I was correct that it does not tell you where it failed). So do not abort the loop if kevent(2) fails and do not log (expected) EBADF.
This commit is contained in:
parent
079b48b710
commit
6770b968bc
1 changed files with 2 additions and 5 deletions
|
@ -121,12 +121,9 @@ kq_update_events(rb_fde_t * F, short filter, PF * handler)
|
||||||
{
|
{
|
||||||
ret = kevent(kq, kqlst + i, 1, NULL, 0, &zero_timespec);
|
ret = kevent(kq, kqlst + i, 1, NULL, 0, &zero_timespec);
|
||||||
/* jdc -- someone needs to do error checking... */
|
/* jdc -- someone needs to do error checking... */
|
||||||
if(ret == -1)
|
/* EBADF is normal here -- jilles */
|
||||||
{
|
if(ret == -1 && errno != EBADF)
|
||||||
rb_lib_log("kq_update_events(): kevent(): %s", strerror(errno));
|
rb_lib_log("kq_update_events(): kevent(): %s", strerror(errno));
|
||||||
kqoff = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
kqoff = 0;
|
kqoff = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue