Commits

Anonymous committed dae6d8e

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.

  • Participants
  • Parent commits 355f05e

Comments (0)

Files changed (1)

File libratbox/src/kqueue.c

 			{
 				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;
 		}