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
47fe799183
commit
e0bd36a502
|
@ -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);
|
||||
/* 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));
|
||||
kqoff = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
kqoff = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue