details: https://github.com/nginx/njs/commit/62b800295f3aa8ec13a06b0c903d41f1e706f78f branches: master commit: 62b800295f3aa8ec13a06b0c903d41f1e706f78f user: Dmitry Volyntsev <xei...@nginx.com> date: Thu, 18 Jul 2024 17:55:20 -0700 description: HTTP: moving ngx_http_methods table out of subrequest() method.
So it can be reused by QuickJS code. --- nginx/ngx_http_js_module.c | 57 +++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index f2dbffbc..a38d32cf 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -85,6 +85,12 @@ typedef njs_int_t (*njs_http_js_header_handler122_t)(njs_vm_t *vm, njs_value_t *setval, njs_value_t *retval); +typedef struct { + ngx_str_t name; + ngx_uint_t value; +} ngx_http_js_entry_t; + + static ngx_int_t ngx_http_js_content_handler(ngx_http_request_t *r); static void ngx_http_js_content_event_handler(ngx_http_request_t *r); static void ngx_http_js_content_write_event_handler(ngx_http_request_t *r); @@ -888,6 +894,25 @@ njs_module_t *njs_http_js_addon_modules[] = { }; +static ngx_http_js_entry_t ngx_http_methods[] = { + { ngx_string("GET"), NGX_HTTP_GET }, + { ngx_string("POST"), NGX_HTTP_POST }, + { ngx_string("HEAD"), NGX_HTTP_HEAD }, + { ngx_string("OPTIONS"), NGX_HTTP_OPTIONS }, + { ngx_string("PROPFIND"), NGX_HTTP_PROPFIND }, + { ngx_string("PUT"), NGX_HTTP_PUT }, + { ngx_string("MKCOL"), NGX_HTTP_MKCOL }, + { ngx_string("DELETE"), NGX_HTTP_DELETE }, + { ngx_string("COPY"), NGX_HTTP_COPY }, + { ngx_string("MOVE"), NGX_HTTP_MOVE }, + { ngx_string("PROPPATCH"), NGX_HTTP_PROPPATCH }, + { ngx_string("LOCK"), NGX_HTTP_LOCK }, + { ngx_string("UNLOCK"), NGX_HTTP_UNLOCK }, + { ngx_string("PATCH"), NGX_HTTP_PATCH }, + { ngx_string("TRACE"), NGX_HTTP_TRACE }, +}; + + static ngx_int_t ngx_http_js_content_handler(ngx_http_request_t *r) { @@ -3069,27 +3094,6 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, ngx_http_request_body_t *rb; ngx_http_post_subrequest_t *ps; - static const struct { - ngx_str_t name; - ngx_uint_t value; - } methods[] = { - { ngx_string("GET"), NGX_HTTP_GET }, - { ngx_string("POST"), NGX_HTTP_POST }, - { ngx_string("HEAD"), NGX_HTTP_HEAD }, - { ngx_string("OPTIONS"), NGX_HTTP_OPTIONS }, - { ngx_string("PROPFIND"), NGX_HTTP_PROPFIND }, - { ngx_string("PUT"), NGX_HTTP_PUT }, - { ngx_string("MKCOL"), NGX_HTTP_MKCOL }, - { ngx_string("DELETE"), NGX_HTTP_DELETE }, - { ngx_string("COPY"), NGX_HTTP_COPY }, - { ngx_string("MOVE"), NGX_HTTP_MOVE }, - { ngx_string("PROPPATCH"), NGX_HTTP_PROPPATCH }, - { ngx_string("LOCK"), NGX_HTTP_LOCK }, - { ngx_string("UNLOCK"), NGX_HTTP_UNLOCK }, - { ngx_string("PATCH"), NGX_HTTP_PATCH }, - { ngx_string("TRACE"), NGX_HTTP_TRACE }, - }; - static const njs_str_t args_key = njs_str("args"); static const njs_str_t method_key = njs_str("method"); static const njs_str_t body_key = njs_str("body"); @@ -3124,7 +3128,7 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, callback = NULL; method = 0; - methods_max = sizeof(methods) / sizeof(methods[0]); + methods_max = sizeof(ngx_http_methods) / sizeof(ngx_http_methods[0]); args_arg.length = 0; args_arg.start = NULL; @@ -3172,8 +3176,9 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, } while (method < methods_max) { - if (method_name.length == methods[method].name.len - && ngx_memcmp(method_name.start, methods[method].name.data, + if (method_name.length == ngx_http_methods[method].name.len + && ngx_memcmp(method_name.start, + ngx_http_methods[method].name.data, method_name.length) == 0) { @@ -3283,8 +3288,8 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, } if (method != methods_max) { - sr->method = methods[method].value; - sr->method_name = methods[method].name; + sr->method = ngx_http_methods[method].value; + sr->method_name = ngx_http_methods[method].name; } else { sr->method = NGX_HTTP_UNKNOWN; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel