From d9fdb3af2d254bdfc6d7f8bbc5f127656e367553 Mon Sep 17 00:00:00 2001 From: Evgeny Kuzin Date: Wed, 9 Apr 2025 09:52:21 -0400 Subject: [PATCH 1/4] allow newer libmicrohttpd versions and do not fail if ipv6 stack is not available --- sources/prom_metrics.c | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/sources/prom_metrics.c b/sources/prom_metrics.c index fb36dbe25..df6217824 100644 --- a/sources/prom_metrics.c +++ b/sources/prom_metrics.c @@ -11,19 +11,47 @@ #ifdef PROMHTTP_FOUND #include +#if MHD_VERSION >= 0x00097002 +enum MHD_Result od_prom_AcceptPolicyCallback(void *cls, + const struct sockaddr *addr, + socklen_t addrlen) +#else int od_prom_AcceptPolicyCallback(void *cls, const struct sockaddr *addr, - socklen_t addrlen) + socklen_t addrlen) +#endif { return MHD_YES; } +static bool system_supports_ipv6() +{ + int sock = socket(AF_INET6, SOCK_STREAM, 0); + if (sock < 0) { + return false; // cannot create IPv6 socket + } + + struct sockaddr_in6 addr = {0}; + addr.sin6_family = AF_INET6; + addr.sin6_addr = in6addr_loopback; + addr.sin6_port = htons(0); // Let OS choose port + + int result = bind(sock, (struct sockaddr*)&addr, sizeof(addr)); + close(sock); + return result == 0; +} + int od_prom_switch_server_on(od_prom_metrics_t *self) { - if (self->http_server) - return NOT_OK_RESPONSE; + int flags = MHD_USE_AUTO_INTERNAL_THREAD; + + if (system_supports_ipv6()) { + flags |= MHD_USE_DUAL_STACK; + } + self->http_server = promhttp_start_daemon( - MHD_USE_DUAL_STACK | MHD_USE_AUTO_INTERNAL_THREAD, self->port, + flags, self->port, od_prom_AcceptPolicyCallback, NULL); + return self->http_server ? OK_RESPONSE : NOT_OK_RESPONSE; } From 9129907d9e61b287cb9c324b10cef3bec0097308 Mon Sep 17 00:00:00 2001 From: Evgeny Kuzin Date: Fri, 11 Apr 2025 10:16:18 -0400 Subject: [PATCH 2/4] apply fmt --- sources/parser.h | 5 +---- sources/prom_metrics.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/sources/parser.h b/sources/parser.h index 8347c6282..c29716f9e 100644 --- a/sources/parser.h +++ b/sources/parser.h @@ -40,10 +40,7 @@ struct od_keyword { int name_len; }; -#define od_keyword(name, token) \ - { \ - token, name, sizeof(name) - 1 \ - } +#define od_keyword(name, token) { token, name, sizeof(name) - 1 } struct od_parser { char *pos; diff --git a/sources/prom_metrics.c b/sources/prom_metrics.c index df6217824..5a75d0227 100644 --- a/sources/prom_metrics.c +++ b/sources/prom_metrics.c @@ -12,12 +12,12 @@ #include #if MHD_VERSION >= 0x00097002 -enum MHD_Result od_prom_AcceptPolicyCallback(void *cls, - const struct sockaddr *addr, - socklen_t addrlen) +enum MHD_Result od_prom_AcceptPolicyCallback(void *cls, + const struct sockaddr *addr, + socklen_t addrlen) #else int od_prom_AcceptPolicyCallback(void *cls, const struct sockaddr *addr, - socklen_t addrlen) + socklen_t addrlen) #endif { return MHD_YES; @@ -30,12 +30,12 @@ static bool system_supports_ipv6() return false; // cannot create IPv6 socket } - struct sockaddr_in6 addr = {0}; + struct sockaddr_in6 addr = { 0 }; addr.sin6_family = AF_INET6; addr.sin6_addr = in6addr_loopback; addr.sin6_port = htons(0); // Let OS choose port - int result = bind(sock, (struct sockaddr*)&addr, sizeof(addr)); + int result = bind(sock, (struct sockaddr *)&addr, sizeof(addr)); close(sock); return result == 0; } @@ -49,8 +49,7 @@ int od_prom_switch_server_on(od_prom_metrics_t *self) } self->http_server = promhttp_start_daemon( - flags, self->port, - od_prom_AcceptPolicyCallback, NULL); + flags, self->port, od_prom_AcceptPolicyCallback, NULL); return self->http_server ? OK_RESPONSE : NOT_OK_RESPONSE; } From 06a93fab1f13f60c1f0d540c8bb3fe303b5444cb Mon Sep 17 00:00:00 2001 From: Evgeny Kuzin Date: Mon, 14 Apr 2025 06:03:17 -0400 Subject: [PATCH 3/4] apply format --- sources/parser.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sources/parser.h b/sources/parser.h index c29716f9e..8347c6282 100644 --- a/sources/parser.h +++ b/sources/parser.h @@ -40,7 +40,10 @@ struct od_keyword { int name_len; }; -#define od_keyword(name, token) { token, name, sizeof(name) - 1 } +#define od_keyword(name, token) \ + { \ + token, name, sizeof(name) - 1 \ + } struct od_parser { char *pos; From 14ec2973d1b41d76053c138bc3feaeeaf0537c7e Mon Sep 17 00:00:00 2001 From: Evgeny Kuzin Date: Mon, 14 Apr 2025 06:16:38 -0400 Subject: [PATCH 4/4] removing deprecated apply_fmt --- Makefile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Makefile b/Makefile index 89c962476..93fc275f4 100644 --- a/Makefile +++ b/Makefile @@ -49,11 +49,6 @@ format: docker build -f docker/format/Dockerfile --tag=odyssey/clang-format-runner . docker run --user=`stat -c "%u:%g" .` -v .:/odyssey:rw odyssey/clang-format-runner -i modules sources stress test third_party -apply_fmt: - for d in sources test third_party stress modules ; do \ - find $$d -maxdepth 5 -iname '*.h' -o -iname '*.c' | xargs -n 1 -t -P $(CONCURRENCY) $(FMT_BIN) -i ; \ - done - build_asan: rm -rf $(BUILD_TEST_ASAN_DIR) mkdir -p $(BUILD_TEST_ASAN_DIR)