summaryrefslogtreecommitdiff
path: root/src/socket
diff options
context:
space:
mode:
Diffstat (limited to 'src/socket')
-rw-r--r--src/socket/socket.h4
-rw-r--r--src/socket/socket_linux.c11
-rw-r--r--src/socket/socket_windows.c5
3 files changed, 19 insertions, 1 deletions
diff --git a/src/socket/socket.h b/src/socket/socket.h
index 3872bd4..fde26f4 100644
--- a/src/socket/socket.h
+++ b/src/socket/socket.h
@@ -25,7 +25,7 @@ enum {
};
// @TODO: Guard against EINTR?
-// https://github.com/kovidgoyal/kitty/blob/master/kitty/safe-wrappers.h
+// https://github.com/kovidgoyal/kitty/blob/master/kitty/safe-wrappers.h
struct nn_socket {
u8 type;
@@ -37,6 +37,7 @@ struct nn_socket {
s32 fd;
struct addrinfo *addrinfo;
struct sockaddr_un addr_un;
+ u32 acceptconn;
#endif
};
@@ -84,3 +85,4 @@ bool nn_socket_check_error(ssize_t ret);
void nn_socket_shutdown(struct nn_socket *sock);
void nn_socket_close(struct nn_socket *sock);
+void nn_socket_cleanup(struct nn_socket *sock);
diff --git a/src/socket/socket_linux.c b/src/socket/socket_linux.c
index 6a97556..e6947c3 100644
--- a/src/socket/socket_linux.c
+++ b/src/socket/socket_linux.c
@@ -185,6 +185,10 @@ bool nn_socket_listen(struct nn_socket *sock)
return false;
}
+ socklen_t optlen = sizeof(sock->acceptconn);
+ getsockopt(sock->fd, SOL_SOCKET, SO_ACCEPTCONN, &sock->acceptconn, &optlen);
+ al_assert(sock->acceptconn);
+
log_debug("Listening.");
return true;
@@ -305,3 +309,10 @@ void nn_socket_close(struct nn_socket *sock)
sock->addrinfo = NULL;
}
}
+
+void nn_socket_cleanup(struct nn_socket *sock)
+{
+ if (sock->type == NNWT_SOCKET_UNIX && sock->acceptconn) {
+ unlink(sock->addr_un.sun_path);
+ }
+}
diff --git a/src/socket/socket_windows.c b/src/socket/socket_windows.c
index 3cf316f..9baa312 100644
--- a/src/socket/socket_windows.c
+++ b/src/socket/socket_windows.c
@@ -174,3 +174,8 @@ void nn_socket_close(struct nn_socket *sock)
// Based on these docs, I assume calling closesocket() is not necessary.
//closesocket(sock->fd);
}
+
+void nn_socket_cleanup(struct nn_socket *sock)
+{
+ (void)sock;
+}