--- a/src/server/daemon/httplistener.h Sat Dec 03 12:27:00 2022 +0100 +++ b/src/server/daemon/httplistener.h Sat Dec 03 13:26:56 2022 +0100 @@ -34,6 +34,13 @@ #include "config.h" #include "../util/systems.h" +#include <arpa/inet.h> +#include <netinet/in.h> +#include <sys/socket.h> +#include <sys/types.h> +#include <netdb.h> +#include <unistd.h> + #include <openssl/bio.h> #include <openssl/ssl.h> #include <openssl/err.h> @@ -112,7 +119,15 @@ // TODO: ssl/tls cipher, ... config }; +union ws_socketaddr { + struct sockaddr_in addr4; + struct sockaddr_in6 addr6; +}; + struct _ws_socket { + union ws_socketaddr addr; + struct sockaddr *sockaddr; + size_t sockaddr_size; int socket; WSBool listening; HttpSSL *ssl; @@ -143,7 +158,15 @@ void http_listener_set_next(HttpListener *listener, HttpListener *next); /* + * Connect to the listener's server socket + * Returns a file descriptor or -1 + */ +int http_listener_connect(HttpListener *listener, WSBool ipv6); + +/* * shutdown all acceptor threads + * this should be called, before any new acceptors for the same socket + * are started */ void http_listener_shutdown_acceptors(HttpListener *listener);