diff --git a/lib/server.c b/lib/server.c
index 88bacf4..1a310ad 100644
--- a/lib/server.c
+++ b/lib/server.c
@@ -189,7 +189,9 @@
 		/* one shot */
 		lws_change_pollfd(wsi, LWS_POLLOUT, 0);
 #ifdef LWS_USE_LIBEV
-        ev_io_stop(context->io_loop,(struct ev_io*)&(wsi->w_write));
+		if (LWS_LIBEV_ENABLED(context))
+			ev_io_stop(context->io_loop,
+				   (struct ev_io *)&wsi->w_write);
 #endif /* LWS_USE_LIBEV */
 
 		if (wsi->state != WSI_STATE_HTTP_ISSUING_FILE) {
@@ -276,16 +278,18 @@
 			LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED, NULL, NULL, 0);
 
 #ifdef LWS_USE_LIBEV
-        new_wsi->w_read.context = context;
-        new_wsi->w_write.context = context;
-        /*
-        new_wsi->w_read.wsi = new_wsi;
-        new_wsi->w_write.wsi = new_wsi;
-        */
-        struct ev_io* w_read = (struct ev_io*)&(new_wsi->w_read);
-        struct ev_io* w_write = (struct ev_io*)&(new_wsi->w_write);
-        ev_io_init(w_read,libwebsocket_accept_cb,accept_fd,EV_READ);
-        ev_io_init(w_write,libwebsocket_accept_cb,accept_fd,EV_WRITE);
+		if (LWS_LIBEV_ENABLED(context)) {
+		        new_wsi->w_read.context = context;
+		        new_wsi->w_write.context = context;
+		        /*
+		        new_wsi->w_read.wsi = new_wsi;
+		        new_wsi->w_write.wsi = new_wsi;
+		        */
+		        struct ev_io* w_read = (struct ev_io*)&(new_wsi->w_read);
+		        struct ev_io* w_write = (struct ev_io*)&(new_wsi->w_write);
+		        ev_io_init(w_read,libwebsocket_accept_cb,accept_fd,EV_READ);
+		        ev_io_init(w_write,libwebsocket_accept_cb,accept_fd,EV_WRITE);
+		}
 #endif /* LWS_USE_LIBEV */
 
 #ifdef LWS_OPENSSL_SUPPORT
@@ -355,7 +359,9 @@
 
 		lws_change_pollfd(wsi, LWS_POLLOUT, 0);
 #ifdef LWS_USE_LIBEV
-        ev_io_stop(context->io_loop,(struct ev_io*)&(wsi->w_write));
+		if (LWS_LIBEV_ENABLED(context))
+			ev_io_stop(context->io_loop,
+					   (struct ev_io *)&wsi->w_write);
 #endif /* LWS_USE_LIBEV */
 
 		lws_latency_pre(context, wsi);
@@ -402,7 +408,9 @@
 			if (m == SSL_ERROR_WANT_READ) {
 				lws_change_pollfd(wsi, 0, LWS_POLLIN);
 #ifdef LWS_USE_LIBEV
-                    ev_io_start(context->io_loop,(struct ev_io*)&(wsi->w_read));
+				if (LWS_LIBEV_ENABLED(context))
+		                    ev_io_start(context->io_loop,
+						(struct ev_io *)&wsi->w_read);
 #endif /* LWS_USE_LIBEV */
 				lwsl_info("SSL_ERROR_WANT_READ\n");
 				break;
@@ -410,7 +418,9 @@
 			if (m == SSL_ERROR_WANT_WRITE) {
 				lws_change_pollfd(wsi, 0, LWS_POLLOUT);
 #ifdef LWS_USE_LIBEV
-                    ev_io_start(context->io_loop,(struct ev_io*)&(wsi->w_write));
+				if (LWS_LIBEV_ENABLED(context))
+					ev_io_start(context->io_loop,
+						(struct ev_io *)&wsi->w_write);
 #endif /* LWS_USE_LIBEV */
 				break;
 			}
