From e55a7612b702b08f7fd4d085c2e5af6e7420e173 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Thu, 23 Nov 2017 02:30:16 +0100 Subject: [PATCH] sock: disable all events after EPOLLONESHOT event --- src/sock.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sock.c b/src/sock.c index 39621d8..56558d8 100644 --- a/src/sock.c +++ b/src/sock.c @@ -335,7 +335,7 @@ int ep_sock_feed_event(ep_port_t* port_info, /* Clear the event mask if EPOLLONESHOT is set and there are any events * to report. */ if (epoll_events != 0 && (sock_private->user_events & EPOLLONESHOT)) - sock_private->user_events = EPOLLERR | EPOLLHUP; + sock_private->user_events = 0; /* Fill the ev structure if there are any events to report. */ if (epoll_events != 0) { @@ -347,7 +347,7 @@ int ep_sock_feed_event(ep_port_t* port_info, if (drop_socket) /* Drop the socket from the epoll set. */ ep_sock_delete(port_info, sock_info); - else + else if (sock_private->user_events != 0) /* Put the socket back onto the attention list so a new poll request will * be submitted. */ ep_port_request_socket_update(port_info, sock_info);