diff --git a/lib/libev.c b/lib/libev.c
index f81a7cf8eb9cea0897d96475cea1fc5bc5504d60..1310a773705fbad14d2202749ac26de09fc1dd95 100644
--- a/lib/libev.c
+++ b/lib/libev.c
@@ -41,13 +41,16 @@ lws_accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents)
 		return;
 
 	eventfd.fd = watcher->fd;
+	eventfd.events = 0;
 	eventfd.revents = EV_NONE;
-	if (revents & EV_READ)
+	if (revents & EV_READ) {
+		eventfd.events |= LWS_POLLIN;
 		eventfd.revents |= LWS_POLLIN;
-
-	if (revents & EV_WRITE)
+	}
+	if (revents & EV_WRITE) {
+		eventfd.events |= LWS_POLLOUT;
 		eventfd.revents |= LWS_POLLOUT;
-
+	}
 	lws_service_fd(context, &eventfd);
 }