From d85cf45668d9b81c1c1a344b25a59b08fb83ccf9 Mon Sep 17 00:00:00 2001 From: theMackabu Date: Thu, 26 Mar 2026 21:47:01 -0700 Subject: [PATCH] improve code flow for server module start --- include/modules/server.h | 2 +- src/main.c | 17 +---------------- src/modules/server.c | 27 +++++++++++++++++++++++++-- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/include/modules/server.h b/include/modules/server.h index 62da60e..3dd8f21 100644 --- a/include/modules/server.h +++ b/include/modules/server.h @@ -5,6 +5,6 @@ #include "types.h" ant_value_t server_start_from_export(ant_t *js, ant_value_t default_export); -bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool *looks_like_config); +int server_maybe_start_from_export(ant_t *js, ant_value_t default_export); #endif diff --git a/src/main.c b/src/main.c index 26de770..25fe7fe 100644 --- a/src/main.c +++ b/src/main.c @@ -311,15 +311,12 @@ static void eval_code(ant_t *js, const char *script, size_t len, const char *tag } static int execute_module(ant_t *js, const char *filename) { - bool looks_like_server = false; - char *use_path_owned = NULL; const char *use_path = filename; ant_value_t ns = 0; ant_value_t specifier = 0; ant_value_t default_export = 0; - ant_value_t server_result = 0; if (esm_is_url(filename)) { js_set(js, js_glob(js), "__dirname", js_mkundef()); @@ -353,19 +350,7 @@ static int execute_module(ant_t *js, const char *filename) { } default_export = js_get(js, ns, "default"); - - if (server_export_has_fetch_handler(js, default_export, &looks_like_server)) { - server_result = server_start_from_export(js, default_export); - if (is_err(server_result)) { - fprintf(stderr, "%s\n", js_str(js, server_result)); - return EXIT_FAILURE; - } - } else if (looks_like_server) { - fprintf(stderr, "Module does not export a fetch handler\n"); - return EXIT_FAILURE; - } - - return EXIT_SUCCESS; + return server_maybe_start_from_export(js, default_export); } int main(int argc, char *argv[]) { diff --git a/src/modules/server.c b/src/modules/server.c index 5a3b83f..4a92e97 100644 --- a/src/modules/server.c +++ b/src/modules/server.c @@ -742,11 +742,10 @@ static void server_on_conn_close(ant_conn_t *conn, void *user_data) { } static void server_on_listener_close(ant_listener_t *listener, void *user_data) { - (void)listener; server_maybe_finish_stop((server_runtime_t *)user_data); } -bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool *looks_like_config) { +static bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool *looks_like_config) { ant_value_t fetch = 0; if (looks_like_config) *looks_like_config = false; @@ -774,6 +773,30 @@ bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool return false; } +int server_maybe_start_from_export(ant_t *js, ant_value_t default_export) { + bool looks_like_server = false; + ant_value_t server_result = 0; + const char *error = NULL; + + if (!server_export_has_fetch_handler(js, default_export, &looks_like_server)) { + if (!looks_like_server) return EXIT_SUCCESS; + error = "Module does not export a fetch handler"; + goto fail; + } + + server_result = server_start_from_export(js, default_export); + if (is_err(server_result)) { + error = js_str(js, server_result); + goto fail; + } + + return EXIT_SUCCESS; + +fail: + fprintf(stderr, "%s\n", error); + return EXIT_FAILURE; +} + ant_value_t server_start_from_export(ant_t *js, ant_value_t default_export) { server_runtime_t *server = NULL; -- 2.51.2