From 7ea8469add10ba91db85a2db27ece20b151216f4 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Tue, 26 Feb 2019 16:16:08 +0300 Subject: [PATCH] HTTP: avoid creating empty request_body buffer in r.subrequest(). This fixes #101 issue on Github. --- nginx/ngx_http_js_module.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index b0ac8471..0705d5a8 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -1869,23 +1869,25 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, goto memory_error; } - rb->bufs = ngx_alloc_chain_link(r->pool); - if (rb->bufs == NULL) { - goto memory_error; - } + if (body_arg.length != 0) { + rb->bufs = ngx_alloc_chain_link(r->pool); + if (rb->bufs == NULL) { + goto memory_error; + } - rb->bufs->next = NULL; + rb->bufs->next = NULL; - rb->bufs->buf = ngx_calloc_buf(r->pool); - if (rb->bufs->buf == NULL) { - goto memory_error; - } + rb->bufs->buf = ngx_calloc_buf(r->pool); + if (rb->bufs->buf == NULL) { + goto memory_error; + } - rb->bufs->buf->memory = 1; - rb->bufs->buf->last_buf = 1; + rb->bufs->buf->memory = 1; + rb->bufs->buf->last_buf = 1; - rb->bufs->buf->pos = body_arg.start; - rb->bufs->buf->last = body_arg.start + body_arg.length; + rb->bufs->buf->pos = body_arg.start; + rb->bufs->buf->last = body_arg.start + body_arg.length; + } sr->request_body = rb; sr->headers_in.content_length_n = body_arg.length; -- 2.47.3