From d7b7f78b6e4493f69d76bf6dabe7d33c6c20b2c7 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 8 Mar 2025 17:31:10 +0000 Subject: [PATCH 1/3] Bugfix: sockets: socket() returns -1 on error, not 0 --- src/datum_sockets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datum_sockets.c b/src/datum_sockets.c index a5c457e..0b18d30 100644 --- a/src/datum_sockets.c +++ b/src/datum_sockets.c @@ -578,7 +578,7 @@ void *datum_gateway_listener_thread(void *arg) { app->datum_active_threads = 0; listen_sock = socket(AF_INET, SOCK_STREAM, 0); - if (!listen_sock) { + if (-1 == listen_sock) { DLOG_FATAL("Could get socket: %s", strerror(errno)); panic_from_thread(__LINE__); return NULL; From 8df1c4fa5b9705fb3e7f7394eb5e9d1070d172cb Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 8 Mar 2025 17:35:29 +0000 Subject: [PATCH 2/3] Bugfix: sockets: Correct error message when socket() fails --- src/datum_sockets.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/datum_sockets.c b/src/datum_sockets.c index 0b18d30..f849664 100644 --- a/src/datum_sockets.c +++ b/src/datum_sockets.c @@ -579,7 +579,7 @@ void *datum_gateway_listener_thread(void *arg) { listen_sock = socket(AF_INET, SOCK_STREAM, 0); if (-1 == listen_sock) { - DLOG_FATAL("Could get socket: %s", strerror(errno)); + DLOG_FATAL("Could not create listening socket: %s", strerror(errno)); panic_from_thread(__LINE__); return NULL; } From 081a38f4291644430e3bb117a5fd67338f1d274f Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sat, 8 Mar 2025 19:40:12 +0000 Subject: [PATCH 3/3] api: Listen with MHD_OPTION_LISTENING_ADDRESS_REUSE --- src/datum_api.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/datum_api.c b/src/datum_api.c index 2342a04..ef0d8da 100644 --- a/src/datum_api.c +++ b/src/datum_api.c @@ -1139,6 +1139,7 @@ void *datum_api_thread(void *ptr) { daemon = MHD_start_daemon(MHD_USE_AUTO | MHD_USE_INTERNAL_POLLING_THREAD, datum_config.api_listen_port, NULL, NULL, &datum_api_answer, NULL, MHD_OPTION_CONNECTION_LIMIT, 128, MHD_OPTION_NOTIFY_COMPLETED, datum_api_request_completed, NULL, + MHD_OPTION_LISTENING_ADDRESS_REUSE, (unsigned int)1, MHD_OPTION_END); if (!daemon) {