Skip to content

Commit 023e266

Browse files
JordanYateskartben
authored andcommitted
net: nsos_sockets: notify pollers on socket close
Raise the poll signal when the socket is being closed to prevent users of `zsock_poll` blocking after the socket is no more. Signed-off-by: Jordan Yates <jordan@embeint.com>
1 parent 8934b81 commit 023e266

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

drivers/net/nsos_sockets.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,13 +258,21 @@ static ssize_t nsos_write(void *obj, const void *buf, size_t sz)
258258
static int nsos_close(void *obj)
259259
{
260260
struct nsos_socket *sock = obj;
261+
struct nsos_socket_poll *poll;
261262
int ret;
262263

263264
ret = nsi_host_close(sock->poll.mid.fd);
264265
if (ret < 0) {
265266
errno = nsos_adapt_get_zephyr_errno();
266267
}
267268

269+
SYS_DLIST_FOR_EACH_CONTAINER(&nsos_polls, poll, node) {
270+
if (poll == &sock->poll) {
271+
poll->mid.revents = ZSOCK_POLLHUP;
272+
poll->mid.cb(&poll->mid);
273+
}
274+
}
275+
268276
k_free(sock);
269277

270278
return ret;

0 commit comments

Comments
 (0)