[njs] Setting status code to 500 by default in js_content handler.

Dmitry Volyntsev xeioex at nginx.com
Wed May 30 12:07:47 UTC 2018


details:   http://hg.nginx.org/njs/rev/1ac5805c9d19
branches:  
changeset: 526:1ac5805c9d19
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Wed May 30 15:07:04 2018 +0300
description:
Setting status code to 500 by default in js_content handler.

This helps to debug incorrectly written content handlers.

diffstat:

 nginx/ngx_http_js_module.c |  12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diffs (36 lines):

diff -r b65fa3d62b74 -r 1ac5805c9d19 nginx/ngx_http_js_module.c
--- a/nginx/ngx_http_js_module.c	Mon May 28 17:05:17 2018 +0300
+++ b/nginx/ngx_http_js_module.c	Wed May 30 15:07:04 2018 +0300
@@ -671,6 +671,13 @@ ngx_http_js_content_event_handler(ngx_ht
         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
         return NJS_ERROR;
     }
 
+    ctx = ngx_http_get_module_ctx(r, ngx_http_js_module);
+
+    ctx->status = NGX_OK;
+
     return NJS_OK;
 }
 


More information about the nginx-devel mailing list