From d8d0245877f69eb1ace3baac776ba0d2273d7b0b Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Wed, 30 May 2018 15:07:04 +0300 Subject: [PATCH] Setting status code to 500 by default in js_content handler. This helps to debug incorrectly written content handlers. --- nginx/ngx_http_js_module.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 645f811c..45689094 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -671,6 +671,13 @@ ngx_http_js_content_event_handler(ngx_http_request_t *r) return; } + /* + * status is expected to be overriden by finish() or return() methods, + * otherwise the content handler is considered invalid. + */ + + ctx->status = NGX_HTTP_INTERNAL_SERVER_ERROR; + if (njs_vm_call(ctx->vm, func, njs_value_arg(ctx->args), 2) != NJS_OK) { njs_vm_retval_to_ext_string(ctx->vm, &exception); @@ -1269,6 +1276,7 @@ static njs_ret_t ngx_http_js_ext_finish(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, njs_index_t unused) { + ngx_http_js_ctx_t *ctx; ngx_http_request_t *r; r = njs_value_data(njs_argument(args, 0)); @@ -1277,6 +1285,10 @@ ngx_http_js_ext_finish(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, return NJS_ERROR; } + ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); + + ctx->status = NGX_OK; + return NJS_OK; } -- 2.47.3