diff --git a/src/main.cc b/src/main.cc index 0849e45d1a98c2d6c13e26ee1e4ec8c400ed7bb7..7e5d98b6b19fc2099cee405cdee39663ece8d7c9 100644 --- a/src/main.cc +++ b/src/main.cc @@ -365,6 +365,12 @@ background() if (setsid() == -1) goto error; + /* + * tell libev we've just forked, this is necessary to re-initialize + * kqueue on FreeBSD. + */ + ev_loop_fork(cord()->loop); + /* * reinit signals after fork, because fork() implicitly calls * signal_reset() via pthread_atfork() hook installed by signal_init().