]> git.kaiwu.me - njs.git/commitdiff
HTTP: avoid creating empty request_body buffer in r.subrequest().
authorDmitry Volyntsev <xeioex@nginx.com>
Tue, 26 Feb 2019 13:16:08 +0000 (16:16 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Tue, 26 Feb 2019 13:16:08 +0000 (16:16 +0300)
This fixes #101 issue on Github.

nginx/ngx_http_js_module.c

index b0ac847168d963e27622ac0e520441000289ea9d..0705d5a8ac0069b7f3dd8a051be8675bd6dd633b 100644 (file)
@@ -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;