diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2024-09-17 22:58:31 -0700 |
---|---|---|
committer | Dmitry Volyntsev <xeioexception@gmail.com> | 2024-09-25 21:46:05 -0700 |
commit | 6e6a9c5ffabefbc9cd5d3a04d33f38a697ae0e65 (patch) | |
tree | 301adb4fcaf4ef46ed1b4c465d44e46754b41e2a /nginx/ngx_http_js_module.c | |
parent | c2bc8c6501b1712f75ea6a82a153383d3d3d2017 (diff) | |
download | njs-6e6a9c5ffabefbc9cd5d3a04d33f38a697ae0e65.tar.gz njs-6e6a9c5ffabefbc9cd5d3a04d33f38a697ae0e65.zip |
HTTP: fixed r.return() with empty string as a body argument.
Diffstat (limited to 'nginx/ngx_http_js_module.c')
-rw-r--r-- | nginx/ngx_http_js_module.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index dec65198..c34fccbd 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -2704,14 +2704,16 @@ ngx_http_js_ext_return(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, return NJS_ERROR; } - if (ngx_js_string(vm, njs_arg(args, nargs, 2), &text) != NGX_OK) { - njs_vm_error(vm, "failed to convert text"); - return NJS_ERROR; - } - ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); - if (status < NGX_HTTP_BAD_REQUEST || text.length) { + if (status < NGX_HTTP_BAD_REQUEST + || !njs_value_is_null_or_undefined(njs_arg(args, nargs, 2))) + { + if (ngx_js_string(vm, njs_arg(args, nargs, 2), &text) != NGX_OK) { + njs_vm_error(vm, "failed to convert text"); + return NJS_ERROR; + } + ngx_memzero(&cv, sizeof(ngx_http_complex_value_t)); cv.value.data = text.start; @@ -5352,11 +5354,11 @@ ngx_http_qjs_ext_return(JSContext *cx, JSValueConst this_val, ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); - if (ngx_qjs_string(ctx->engine, argv[1], &body) != NGX_OK) { - return JS_ThrowOutOfMemory(cx); - } + if (status < NGX_HTTP_BAD_REQUEST || !JS_IsNullOrUndefined(argv[1])) { + if (ngx_qjs_string(ctx->engine, argv[1], &body) != NGX_OK) { + return JS_ThrowOutOfMemory(cx); + } - if (status < NGX_HTTP_BAD_REQUEST || body.len) { ngx_memzero(&cv, sizeof(ngx_http_complex_value_t)); cv.value.data = body.data; |