From 258ce95f79fc3a54d7d6786b600c81120ae62dbe Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Thu, 14 Sep 2017 00:33:04 +0200 Subject: [PATCH] socket: add ep_sock_force_delete() --- src/epoll-socket.c | 8 ++++++++ src/epoll-socket.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/epoll-socket.c b/src/epoll-socket.c index 072374b..5a4da06 100644 --- a/src/epoll-socket.c +++ b/src/epoll-socket.c @@ -145,6 +145,14 @@ void ep_sock_delete(ep_port_t* port_info, ep_sock_t* sock_info) { _ep_sock_maybe_free(sock_private); } +void ep_sock_force_delete(ep_port_t* port_info, ep_sock_t* sock_info) { + _ep_sock_private_t* sock_private = _ep_sock_private(sock_info); + if (sock_private->latest_poll_req != NULL) + poll_req_delete(port_info, sock_info, sock_private->latest_poll_req); + assert(sock_private->poll_req_count == 0); + ep_sock_delete(port_info, sock_info); +} + ep_sock_t* ep_sock_find(tree_t* tree, SOCKET socket) { tree_node_t* tree_node = tree_find(tree, socket); if (tree_node == NULL) diff --git a/src/epoll-socket.h b/src/epoll-socket.h index df4a061..d554d10 100644 --- a/src/epoll-socket.h +++ b/src/epoll-socket.h @@ -21,6 +21,8 @@ typedef struct ep_sock { EPOLL_INTERNAL ep_sock_t* ep_sock_new(ep_port_t* port_info, SOCKET socket); EPOLL_INTERNAL void ep_sock_delete(ep_port_t* port_info, ep_sock_t* sock_info); +EPOLL_INTERNAL void ep_sock_force_delete(ep_port_t* port_info, + ep_sock_t* sock_info); EPOLL_INTERNAL ep_sock_t* ep_sock_find(tree_t* tree, SOCKET socket);