do not free the sender when the sender thread exits (#18441)
Costa Tsaousis committed
Aug 29, 2024 at 23:19 UTC
aa5d16dee64e1cc3fd4b43a7da915462751da670
3 files changed
+8
-9
src/streaming/sender.c
-2
@@ -751,8 +751,6 @@ void *rrdpush_sender_thread(void *ptr) {
751
sender_unlock(s);
752
753
freez(pipe_buffer);
754
- freez(s);
755
-
754
worker_unregister();
755
756
return NULL;
src/streaming/stream_path.c
+2
-3
@@ -139,10 +139,9 @@ static BUFFER *stream_path_payload(RRDHOST *host) {
139
140
void stream_path_send_to_parent(RRDHOST *host) {
141
struct sender_state *s = host->sender;
142
- if(!s || !stream_has_capability(s, STREAM_CAP_PATHS))
143
- return;
142
+ if(!s || !stream_has_capability(s, STREAM_CAP_PATHS)) return;
143
145
- CLEAN_BUFFER *payload = stream_path_payload(s->host);
144
+ CLEAN_BUFFER *payload = stream_path_payload(host);
145
146
BUFFER *wb = sender_start(s);
147
buffer_sprintf(wb, PLUGINSD_KEYWORD_JSON " " PLUGINSD_KEYWORD_STREAM_PATH "\n%s\n" PLUGINSD_KEYWORD_JSON_END "\n", buffer_tostring(payload));
src/web/server/web_client.c
+6
-4
@@ -705,11 +705,12 @@ HTTP_VALIDATION http_request_validate(struct web_client *w) {
705
if(last_pos > 4) last_pos -= 4; // allow searching for \r\n\r\n
706
else last_pos = 0;
707
708
- if(w->header_parse_last_size < last_pos)
708
+ if(w->header_parse_last_size <= last_pos)
709
last_pos = 0;
710
711
- is_it_valid =
712
- url_is_request_complete_and_extract_payload(s, &s[last_pos], w->header_parse_last_size, &w->payload);
711
+ is_it_valid = url_is_request_complete_and_extract_payload(s, &s[last_pos],
712
+ w->header_parse_last_size, &w->payload);
713
+
714
if(!is_it_valid) {
715
if(w->header_parse_tries > HTTP_REQ_MAX_HEADER_FETCH_TRIES) {
716
netdata_log_info("Disabling slow client after %zu attempts to read the request (%zu bytes received)", w->header_parse_tries, buffer_strlen(w->response.data));
@@ -1824,11 +1825,12 @@ ssize_t web_client_receive(struct web_client *w)
1825
return web_client_read_file(w);
1826
1827
ssize_t bytes;
1827
- ssize_t left = (ssize_t)(w->response.data->size - w->response.data->len);
1828
1829
// do we have any space for more data?
1830
buffer_need_bytes(w->response.data, NETDATA_WEB_REQUEST_INITIAL_SIZE);
1831
1832
+ ssize_t left = (ssize_t)(w->response.data->size - w->response.data->len);
1833
+
1834
errno_clear();
1835
1836
if ( (web_client_check_conn_tcp(w)) && (netdata_ssl_web_server_ctx) ) {