From a55c8ef63bb4941fdee5ddf00ed564e246c8a939 Mon Sep 17 00:00:00 2001 From: Soikk Date: Sat, 6 Dec 2025 20:16:37 +0100 Subject: Reworked worker architecture - replaced the central socket-multiple accepts architecture thanks to SO_REUSEPORT - removed master/worker distinctions for server and config - fixed bug with rewrites not being read properly by multiple workers because of null characters --- src/net/net.h | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'src/net/net.h') diff --git a/src/net/net.h b/src/net/net.h index 297e417..d23c970 100755 --- a/src/net/net.h +++ b/src/net/net.h @@ -66,36 +66,23 @@ typedef struct http_server { str port; int backlog; int ssocket; -} http_server; - -typedef struct http_worker { - int ssocket; int csocket; int secure; SSL_CTX *ssl_ctx; SSL *ssl; -} http_worker; - -#define MAX_RESPONSE_SIZE 0x0FFFFFFF -#define MAX_BODY_SIZE (MAX_RESPONSE_SIZE - 0x0FFF) - -#define insert_header(hm, h) \ - (hm).headers[(hm).hlen++] = (h) +} http_server; http_server *setup_http_server(str port, int backlog); void destroy_http_server(http_server **hs); -http_worker *setup_http_worker(int ssocket, int secure, str certfile, str keyfile); -void destroy_http_worker(http_worker **hw); - -int setup_https(http_worker *hw, str certfile, str keyfile); -void reset_https(http_worker *hw); -void terminate_https(http_worker *hw); +int setup_https(http_server*hs, str certfile, str keyfile); +void reset_https(http_server *hs); +void terminate_https(http_server *hs); -int accept_connection(http_worker *hw, char ip[INET_ADDRSTRLEN]); +int accept_connection(http_server *hs, char ip[INET_ADDRSTRLEN]); -int receive_request(http_worker *hw, str *request); +int receive_request(http_server *hs, str *request); str generate_resource(url resource, str rurl); @@ -107,6 +94,6 @@ enum http_method get_http_method(str method); url sanitize_url(str rurl); -void send_file(http_worker *hw, str filename); +void send_file(http_server *hs, str filename); #endif \ No newline at end of file -- cgit v1.2.3