details: https://hg.nginx.org/njs/rev/770f64020ada branches: changeset: 1966:770f64020ada user: Dmitry Volyntsev <xei...@nginx.com> date: Tue Sep 27 16:40:06 2022 -0700 description: Fetch: added support for HEAD method.
This closes #577 issue on Github. diffstat: nginx/ngx_js_fetch.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diffs (52 lines): diff -r 43e35b05fd1b -r 770f64020ada nginx/ngx_js_fetch.c --- a/nginx/ngx_js_fetch.c Tue Sep 27 10:56:54 2022 -0700 +++ b/nginx/ngx_js_fetch.c Tue Sep 27 16:40:06 2022 -0700 @@ -66,6 +66,8 @@ struct ngx_js_http_s { njs_str_t url; ngx_array_t headers; + unsigned header_only; + #if (NGX_SSL) ngx_str_t tls_name; ngx_ssl_t *ssl; @@ -473,6 +475,8 @@ ngx_js_ext_fetch(njs_vm_t *vm, njs_value njs_chb_init(&http->chain, njs_vm_memory_pool(vm)); + http->header_only = njs_strstr_case_eq(&method, &njs_str_value("HEAD")); + njs_chb_append(&http->chain, method.start, method.length); njs_chb_append_literal(&http->chain, " "); @@ -1404,14 +1408,16 @@ ngx_js_http_process_body(ngx_js_http_t * return NGX_ERROR; } - if (http->http_parse.chunked + if (!http->header_only + && http->http_parse.chunked && http->http_parse.content_length_n == -1) { ngx_js_http_error(http, 0, "invalid fetch chunked response"); return NGX_ERROR; } - if (http->http_parse.content_length_n == -1 + if (http->header_only + || http->http_parse.content_length_n == -1 || size == http->http_parse.content_length_n) { ret = njs_vm_external_create(http->vm, njs_value_arg(&http->reply), @@ -1459,7 +1465,10 @@ ngx_js_http_process_body(ngx_js_http_t * } else { size = njs_chb_size(&http->chain); - if (http->http_parse.content_length_n == -1) { + if (http->header_only) { + need = 0; + + } else if (http->http_parse.content_length_n == -1) { need = http->max_response_body_size - size; } else { _______________________________________________ nginx-devel mailing list -- nginx-devel@nginx.org To unsubscribe send an email to nginx-devel-le...@nginx.org