From 386ccdd61e8256c8b21ee27ee2fc12438fc5ca98 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Tue, 17 Oct 2023 11:30:20 +0200 Subject: Adding upstream version 1.43.0. Signed-off-by: Daniel Baumann --- web/api/web_api_v1.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'web/api/web_api_v1.c') diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c index 6371f86b7..648864017 100644 --- a/web/api/web_api_v1.c +++ b/web/api/web_api_v1.c @@ -644,7 +644,7 @@ inline int web_client_api_request_v1_charts(RRDHOST *host, struct web_client *w, buffer_flush(w->response.data); w->response.data->content_type = CT_APPLICATION_JSON; - charts2json(host, w->response.data, 0, 0); + charts2json(host, w->response.data, 0); return HTTP_RESP_OK; } @@ -1013,11 +1013,7 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client * #endif /* NETDATA_INTERNAL_CHECKS */ } - if(unlikely(respect_web_browser_do_not_track_policy && web_client_has_donottrack(w))) { - buffer_flush(w->response.data); - buffer_sprintf(w->response.data, "Your web browser is sending 'DNT: 1' (Do Not Track). The registry requires persistent cookies on your browser to work."); - return HTTP_RESP_BAD_REQUEST; - } + bool do_not_track = respect_web_browser_do_not_track_policy && web_client_has_donottrack(w); if(unlikely(action == 'H')) { // HELLO request, dashboard ACL @@ -1029,6 +1025,12 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client * // everything else, registry ACL if(unlikely(!web_client_can_access_registry(w))) return web_client_permission_denied(w); + + if(unlikely(do_not_track)) { + buffer_flush(w->response.data); + buffer_sprintf(w->response.data, "Your web browser is sending 'DNT: 1' (Do Not Track). The registry requires persistent cookies on your browser to work."); + return HTTP_RESP_BAD_REQUEST; + } } buffer_no_cacheable(w->response.data); @@ -1079,7 +1081,7 @@ inline int web_client_api_request_v1_registry(RRDHOST *host, struct web_client * return registry_request_switch_json(host, w, person_guid, machine_guid, machine_url, to_person_guid, now_realtime_sec()); case 'H': - return registry_request_hello_json(host, w); + return registry_request_hello_json(host, w, do_not_track); default: buffer_flush(w->response.data); @@ -1313,7 +1315,7 @@ int web_client_api_request_v1_ml_info(RRDHOST *host, struct web_client *w, char (void) url; if (!netdata_ready) - return HTTP_RESP_BACKEND_FETCH_FAILED; + return HTTP_RESP_SERVICE_UNAVAILABLE; BUFFER *wb = w->response.data; buffer_flush(wb); @@ -1332,7 +1334,7 @@ int web_client_api_request_v1_ml_models(RRDHOST *host, struct web_client *w, cha (void) url; if (!netdata_ready) - return HTTP_RESP_BACKEND_FETCH_FAILED; + return HTTP_RESP_SERVICE_UNAVAILABLE; BUFFER *wb = w->response.data; buffer_flush(wb); @@ -1346,7 +1348,7 @@ int web_client_api_request_v1_ml_models(RRDHOST *host, struct web_client *w, cha inline int web_client_api_request_v1_info(RRDHOST *host, struct web_client *w, char *url) { (void)url; - if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED; + if (!netdata_ready) return HTTP_RESP_SERVICE_UNAVAILABLE; BUFFER *wb = w->response.data; buffer_flush(wb); wb->content_type = CT_APPLICATION_JSON; @@ -1360,7 +1362,7 @@ inline int web_client_api_request_v1_info(RRDHOST *host, struct web_client *w, c static int web_client_api_request_v1_aclk_state(RRDHOST *host, struct web_client *w, char *url) { UNUSED(url); UNUSED(host); - if (!netdata_ready) return HTTP_RESP_BACKEND_FETCH_FAILED; + if (!netdata_ready) return HTTP_RESP_SERVICE_UNAVAILABLE; BUFFER *wb = w->response.data; buffer_flush(wb); @@ -1386,7 +1388,7 @@ int web_client_api_request_v1_weights(RRDHOST *host, struct web_client *w, char int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char *url) { if (!netdata_ready) - return HTTP_RESP_BACKEND_FETCH_FAILED; + return HTTP_RESP_SERVICE_UNAVAILABLE; int timeout = 0; const char *function = NULL; @@ -1412,12 +1414,14 @@ int web_client_api_request_v1_function(RRDHOST *host, struct web_client *w, char wb->content_type = CT_APPLICATION_JSON; buffer_no_cacheable(wb); - return rrd_call_function_and_wait(host, wb, timeout, function); + return rrd_function_run(host, wb, timeout, function, true, NULL, + NULL, NULL, + web_client_interrupt_callback, w, NULL); } int web_client_api_request_v1_functions(RRDHOST *host, struct web_client *w, char *url __maybe_unused) { if (!netdata_ready) - return HTTP_RESP_BACKEND_FETCH_FAILED; + return HTTP_RESP_SERVICE_UNAVAILABLE; BUFFER *wb = w->response.data; buffer_flush(wb); @@ -1500,7 +1504,7 @@ static void web_client_api_v1_dbengine_stats_for_tier(BUFFER *wb, size_t tier) { } int web_client_api_request_v1_dbengine_stats(RRDHOST *host __maybe_unused, struct web_client *w, char *url __maybe_unused) { if (!netdata_ready) - return HTTP_RESP_BACKEND_FETCH_FAILED; + return HTTP_RESP_SERVICE_UNAVAILABLE; BUFFER *wb = w->response.data; buffer_flush(wb); -- cgit v1.2.3