From 9ac09da1d2c4f4eebfba2275772750845084120c Mon Sep 17 00:00:00 2001 From: Sergey Lyubka Date: Mon, 21 Jul 2025 14:03:12 +0100 Subject: [PATCH] Remove mg_http_run_simple_server - move to docs --- mongoose.c | 60 ------------------------------------------------------ mongoose.h | 1 - src/http.c | 60 ------------------------------------------------------ src/http.h | 1 - 4 files changed, 122 deletions(-) diff --git a/mongoose.c b/mongoose.c index 1dc0b19f..55c4bf07 100644 --- a/mongoose.c +++ b/mongoose.c @@ -2560,66 +2560,6 @@ static void http_cb(struct mg_connection *c, int ev, void *ev_data) { (void) ev_data; } -// Helper function for mg_hfn, see below -static void mg_hfn_push_data(struct mg_connection *c) { - size_t left = *(size_t *) c->data; // Bytes left to send - if (left > 0 && c->send.len < MG_IO_SIZE) { - const char chunk[] = "abcdefghijklmnopqrstubwxyz0123456789\n"; - size_t cs = sizeof(chunk) - 1; - while (left >= cs && c->send.len < MG_IO_SIZE * 2) { - mg_send(c, chunk, cs); - left -= cs; - } - if (left < cs) { - if (left > 0) mg_send(c, chunk, left - 1); - if (left > 0) mg_send(c, "\n", 1); - left = 0; - } - *(size_t *) c->data = left; - if (left == 0) c->is_resp = 0; - } -} - -// Implement a simple server with the following endpoints: -// URI POST data Description -// /debug {"level": 0} Set server debug level, from 0 to 4 -// /quit n/a Return from mg_http_run_simple_server() -// /?SIZE n/a Send a text response, default size is 256 -static void mg_hfn(struct mg_connection *c, int ev, void *ev_data) { - if (ev == MG_EV_HTTP_MSG) { - struct mg_http_message *hm = (struct mg_http_message *) ev_data; - if (mg_match(hm->uri, mg_str("/quit"), NULL)) { - mg_http_reply(c, 200, "", "ok\n"); - c->is_draining = 1; - c->data[sizeof(size_t)] = 'X'; - } else if (mg_match(hm->uri, mg_str("/debug"), NULL)) { - int level = (int) mg_json_get_long(hm->body, "$.level", MG_LL_DEBUG); - mg_log_set(level); - mg_http_reply(c, 200, "", "Debug level set to %d\n", level); - } else { - size_t size = (size_t) mg_json_get_long(hm->query, "$", 256); - if (size == 0) size = 256; - *(size_t *) c->data = size; - c->is_resp = 1; - mg_printf(c, "HTTP/1.1 200 OK\nContent-Length: %lu\n\n", size); - mg_hfn_push_data(c); - } - } else if (ev == MG_EV_WRITE) { - mg_hfn_push_data(c); - } else if (ev == MG_EV_CLOSE) { - if (c->data[sizeof(size_t)] == 'X') *(bool *) c->fn_data = true; - } -} - -void mg_http_run_simple_server(const char *url) { - struct mg_mgr mgr; - bool done = false; - mg_mgr_init(&mgr); - if (mg_http_listen(&mgr, url, mg_hfn, &done) == NULL) done = true; - while (done == false) mg_mgr_poll(&mgr, 100); - mg_mgr_free(&mgr); -} - struct mg_connection *mg_http_connect(struct mg_mgr *mgr, const char *url, mg_event_handler_t fn, void *fn_data) { return mg_connect_svc(mgr, url, fn, fn_data, http_cb, NULL); diff --git a/mongoose.h b/mongoose.h index a5851ac8..94879cf6 100644 --- a/mongoose.h +++ b/mongoose.h @@ -1750,7 +1750,6 @@ void mg_http_bauth(struct mg_connection *, const char *user, const char *pass); struct mg_str mg_http_get_header_var(struct mg_str s, struct mg_str v); size_t mg_http_next_multipart(struct mg_str, size_t, struct mg_http_part *); int mg_http_status(const struct mg_http_message *hm); -void mg_http_run_simple_server(const char *url); void mg_http_serve_ssi(struct mg_connection *c, const char *root, diff --git a/src/http.c b/src/http.c index 9aea20ac..d2080b6c 100644 --- a/src/http.c +++ b/src/http.c @@ -1119,66 +1119,6 @@ static void http_cb(struct mg_connection *c, int ev, void *ev_data) { (void) ev_data; } -// Helper function for mg_hfn, see below -static void mg_hfn_push_data(struct mg_connection *c) { - size_t left = *(size_t *) c->data; // Bytes left to send - if (left > 0 && c->send.len < MG_IO_SIZE) { - const char chunk[] = "abcdefghijklmnopqrstubwxyz0123456789\n"; - size_t cs = sizeof(chunk) - 1; - while (left >= cs && c->send.len < MG_IO_SIZE * 2) { - mg_send(c, chunk, cs); - left -= cs; - } - if (left < cs) { - if (left > 0) mg_send(c, chunk, left - 1); - if (left > 0) mg_send(c, "\n", 1); - left = 0; - } - *(size_t *) c->data = left; - if (left == 0) c->is_resp = 0; - } -} - -// Implement a simple server with the following endpoints: -// URI POST data Description -// /debug {"level": 0} Set server debug level, from 0 to 4 -// /quit n/a Return from mg_http_run_simple_server() -// /?SIZE n/a Send a text response, default size is 256 -static void mg_hfn(struct mg_connection *c, int ev, void *ev_data) { - if (ev == MG_EV_HTTP_MSG) { - struct mg_http_message *hm = (struct mg_http_message *) ev_data; - if (mg_match(hm->uri, mg_str("/quit"), NULL)) { - mg_http_reply(c, 200, "", "ok\n"); - c->is_draining = 1; - c->data[sizeof(size_t)] = 'X'; - } else if (mg_match(hm->uri, mg_str("/debug"), NULL)) { - int level = (int) mg_json_get_long(hm->body, "$.level", MG_LL_DEBUG); - mg_log_set(level); - mg_http_reply(c, 200, "", "Debug level set to %d\n", level); - } else { - size_t size = (size_t) mg_json_get_long(hm->query, "$", 256); - if (size == 0) size = 256; - *(size_t *) c->data = size; - c->is_resp = 1; - mg_printf(c, "HTTP/1.1 200 OK\nContent-Length: %lu\n\n", size); - mg_hfn_push_data(c); - } - } else if (ev == MG_EV_WRITE) { - mg_hfn_push_data(c); - } else if (ev == MG_EV_CLOSE) { - if (c->data[sizeof(size_t)] == 'X') *(bool *) c->fn_data = true; - } -} - -void mg_http_run_simple_server(const char *url) { - struct mg_mgr mgr; - bool done = false; - mg_mgr_init(&mgr); - if (mg_http_listen(&mgr, url, mg_hfn, &done) == NULL) done = true; - while (done == false) mg_mgr_poll(&mgr, 100); - mg_mgr_free(&mgr); -} - struct mg_connection *mg_http_connect(struct mg_mgr *mgr, const char *url, mg_event_handler_t fn, void *fn_data) { return mg_connect_svc(mgr, url, fn, fn_data, http_cb, NULL); diff --git a/src/http.h b/src/http.h index 36c4b694..c774369c 100644 --- a/src/http.h +++ b/src/http.h @@ -63,4 +63,3 @@ void mg_http_bauth(struct mg_connection *, const char *user, const char *pass); struct mg_str mg_http_get_header_var(struct mg_str s, struct mg_str v); size_t mg_http_next_multipart(struct mg_str, size_t, struct mg_http_part *); int mg_http_status(const struct mg_http_message *hm); -void mg_http_run_simple_server(const char *url);