From 932fb6f1047e21969b5a3804f54bf5ceb8e0071f Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Tue, 14 Oct 2025 17:42:07 -0700 Subject: [PATCH] Fetch: introduced ngx_js_chain_to_buf() helper function. --- nginx/ngx_js_http.c | 34 ++++++++++++++++++++++++---------- nginx/ngx_js_http.h | 2 ++ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/nginx/ngx_js_http.c b/nginx/ngx_js_http.c index 9389bbca..400d42d2 100644 --- a/nginx/ngx_js_http.c +++ b/nginx/ngx_js_http.c @@ -521,21 +521,12 @@ ngx_js_http_write_handler(ngx_event_t *wev) b = http->buffer; if (b == NULL) { - size = njs_chb_size(&http->chain); - if (size < 0) { - ngx_js_http_error(http, "memory error"); - return; - } - - b = ngx_create_temp_buf(http->pool, size); + b = ngx_js_chain_to_buf(http->pool, &http->chain); if (b == NULL) { ngx_js_http_error(http, "memory error"); return; } - njs_chb_join_to(&http->chain, b->last); - b->last += size; - http->buffer = b; } @@ -1861,6 +1852,29 @@ close: } +ngx_buf_t * +ngx_js_chain_to_buf(ngx_pool_t *pool, njs_chb_t *chain) +{ + ssize_t size; + ngx_buf_t *buf; + + size = njs_chb_size(chain); + if (size < 0) { + return NULL; + } + + buf = ngx_create_temp_buf(pool, size); + if (buf == NULL) { + return NULL; + } + + njs_chb_join_to(chain, buf->last); + buf->last += size; + + return buf; +} + + static void ngx_js_fetch_append_request_headers(njs_chb_t *chain, ngx_js_request_t *request) diff --git a/nginx/ngx_js_http.h b/nginx/ngx_js_http.h index 51f0bcd4..bb649685 100644 --- a/nginx/ngx_js_http.h +++ b/nginx/ngx_js_http.h @@ -167,6 +167,8 @@ void ngx_js_http_trim(u_char **value, size_t *len, int trim_c0_control_or_space); ngx_int_t ngx_js_check_header_name(u_char *name, size_t len); +ngx_buf_t *ngx_js_chain_to_buf(ngx_pool_t *pool, njs_chb_t *chain); + void ngx_js_fetch_build_request(ngx_js_http_t *http, ngx_js_request_t *request, ngx_str_t *path, ngx_url_t *u); -- 2.47.3