int res;
EV_SET(&changes[nchanges++], fd->fd, EVFILT_READ, EV_ADD, 0, 0, fd);
- if (fd_wants_writes(fd)) {
- EV_SET(&changes[nchanges++], fd->fd, EVFILT_WRITE, EV_ADD, 0, 0, fd);
- }
+ EV_SET(&changes[nchanges++], fd->fd, EVFILT_WRITE, fd_wants_writes(fd) ? EV_ADD : EV_DELETE, 0, 0, fd);
res = kevent(kq_fd, changes, nchanges, NULL, 0, NULL);
if (res < 0) {
log_module(MAIN_LOG, LOG_ERROR, "kevent() add failed: %s", strerror(errno));