Welcome! Log In Create A New Profile

Advanced

[njs] Fetch: added support for HEAD method.

Dmitry Volyntsev
September 27, 2022 07:42PM
details: https://hg.nginx.org/njs/rev/770f64020ada
branches:
changeset: 1966:770f64020ada
user: Dmitry Volyntsev <xeioex@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-leave@nginx.org
Subject Author Views Posted

[njs] Fetch: added support for HEAD method.

Dmitry Volyntsev 456 September 27, 2022 07:42PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 208
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready