aboutsummaryrefslogtreecommitdiff
path: root/nginx/ngx_http_js_module.c
diff options
context:
space:
mode:
authorDmitry Volyntsev <xeioex@nginx.com>2024-09-17 22:58:31 -0700
committerDmitry Volyntsev <xeioexception@gmail.com>2024-09-25 21:46:05 -0700
commit6e6a9c5ffabefbc9cd5d3a04d33f38a697ae0e65 (patch)
tree301adb4fcaf4ef46ed1b4c465d44e46754b41e2a /nginx/ngx_http_js_module.c
parentc2bc8c6501b1712f75ea6a82a153383d3d3d2017 (diff)
downloadnjs-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.c22
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;