socket: add ep_sock_force_delete()

This commit is contained in:
Bert Belder 2017-09-14 00:33:04 +02:00
parent caade91a1a
commit 258ce95f79
2 changed files with 10 additions and 0 deletions

View File

@ -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)

View File

@ -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);