diff --git a/drivers/net/nsos_sockets.c b/drivers/net/nsos_sockets.c index 6a1cc763739..7aa4e3cb924 100644 --- a/drivers/net/nsos_sockets.c +++ b/drivers/net/nsos_sockets.c @@ -258,6 +258,7 @@ static ssize_t nsos_write(void *obj, const void *buf, size_t sz) static int nsos_close(void *obj) { struct nsos_socket *sock = obj; + struct nsos_socket_poll *poll; int ret; ret = nsi_host_close(sock->poll.mid.fd); @@ -265,6 +266,13 @@ static int nsos_close(void *obj) errno = nsos_adapt_get_zephyr_errno(); } + SYS_DLIST_FOR_EACH_CONTAINER(&nsos_polls, poll, node) { + if (poll == &sock->poll) { + poll->mid.revents = ZSOCK_POLLHUP; + poll->mid.cb(&poll->mid); + } + } + k_free(sock); return ret;