[njs] Modules: simplified access to nginx values from JS engines.

noreply at nginx.com noreply at nginx.com
Tue Sep 16 23:08:02 UTC 2025


details:   https://github.com/nginx/njs/commit/51326759b5b5bebc960d7b89ab92a24c55639ffc
branches:  master
commit:    51326759b5b5bebc960d7b89ab92a24c55639ffc
user:      Dmitry Volyntsev <xeioex at nginx.com>
date:      Wed, 3 Sep 2025 22:44:04 -0700
description:
Modules: simplified access to nginx values from JS engines.


---
 nginx/ngx_http_js_module.c   | 87 ++++++--------------------------------------
 nginx/ngx_js.h               | 76 ++++++++++++++++++++------------------
 nginx/ngx_js_fetch.c         | 21 +++++------
 nginx/ngx_js_http.c          |  6 +--
 nginx/ngx_js_http.h          |  2 +-
 nginx/ngx_qjs_fetch.c        | 11 +++---
 nginx/ngx_stream_js_module.c | 86 ++++++-------------------------------------
 7 files changed, 83 insertions(+), 206 deletions(-)

diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c
index 286a0a78..736635cd 100644
--- a/nginx/ngx_http_js_module.c
+++ b/nginx/ngx_http_js_module.c
@@ -358,10 +358,8 @@ static void ngx_http_qjs_periodic_finalizer(JSRuntime *rt, JSValue val);
 static ngx_pool_t *ngx_http_js_pool(ngx_http_request_t *r);
 static ngx_resolver_t *ngx_http_js_resolver(ngx_http_request_t *r);
 static ngx_msec_t ngx_http_js_resolver_timeout(ngx_http_request_t *r);
-static ngx_msec_t ngx_http_js_fetch_timeout(ngx_http_request_t *r);
-static size_t ngx_http_js_buffer_size(ngx_http_request_t *r);
-static size_t ngx_http_js_max_response_buffer_size(ngx_http_request_t *r);
 static void ngx_http_js_event_finalize(ngx_http_request_t *r, ngx_int_t rc);
+static ngx_js_loc_conf_t *ngx_http_js_loc_conf(ngx_http_request_t *r);
 static ngx_js_ctx_t *ngx_http_js_ctx(ngx_http_request_t *r);
 
 static void ngx_http_js_periodic_handler(ngx_event_t *ev);
@@ -391,9 +389,6 @@ static void *ngx_http_js_create_loc_conf(ngx_conf_t *cf);
 static char *ngx_http_js_merge_loc_conf(ngx_conf_t *cf, void *parent,
     void *child);
 
-static ngx_ssl_t *ngx_http_js_ssl(ngx_http_request_t *r);
-static ngx_flag_t ngx_http_js_ssl_verify(ngx_http_request_t *r);
-
 static ngx_int_t ngx_http_js_parse_unsafe_uri(ngx_http_request_t *r,
     njs_str_t *uri, njs_str_t *args);
 
@@ -972,13 +967,9 @@ static uintptr_t ngx_http_js_uptr[] = {
     (uintptr_t) ngx_http_js_resolver,
     (uintptr_t) ngx_http_js_resolver_timeout,
     (uintptr_t) ngx_http_js_event_finalize,
-    (uintptr_t) ngx_http_js_ssl,
-    (uintptr_t) ngx_http_js_ssl_verify,
-    (uintptr_t) ngx_http_js_fetch_timeout,
-    (uintptr_t) ngx_http_js_buffer_size,
-    (uintptr_t) ngx_http_js_max_response_buffer_size,
-    (uintptr_t) 0 /* main_conf ptr */,
+    (uintptr_t) ngx_http_js_loc_conf,
     (uintptr_t) ngx_http_js_ctx,
+    (uintptr_t) 0 /* main_conf ptr */,
 };
 
 
@@ -4666,39 +4657,6 @@ ngx_http_js_resolver_timeout(ngx_http_request_t *r)
 }
 
 
-static ngx_msec_t
-ngx_http_js_fetch_timeout(ngx_http_request_t *r)
-{
-    ngx_http_js_loc_conf_t  *jlcf;
-
-    jlcf = ngx_http_get_module_loc_conf(r, ngx_http_js_module);
-
-    return jlcf->timeout;
-}
-
-
-static size_t
-ngx_http_js_buffer_size(ngx_http_request_t *r)
-{
-    ngx_http_js_loc_conf_t  *jlcf;
-
-    jlcf = ngx_http_get_module_loc_conf(r, ngx_http_js_module);
-
-    return jlcf->buffer_size;
-}
-
-
-static size_t
-ngx_http_js_max_response_buffer_size(ngx_http_request_t *r)
-{
-    ngx_http_js_loc_conf_t  *jlcf;
-
-    jlcf = ngx_http_get_module_loc_conf(r, ngx_http_js_module);
-
-    return jlcf->max_response_body_size;
-}
-
-
 static void
 ngx_http_js_event_finalize(ngx_http_request_t *r, ngx_int_t rc)
 {
@@ -4721,6 +4679,13 @@ ngx_http_js_event_finalize(ngx_http_request_t *r, ngx_int_t rc)
 }
 
 
+static ngx_js_loc_conf_t *
+ngx_http_js_loc_conf(ngx_http_request_t *r)
+{
+    return ngx_http_get_module_loc_conf(r, ngx_http_js_module);
+}
+
+
 static ngx_js_ctx_t *
 ngx_http_js_ctx(ngx_http_request_t *r)
 {
@@ -7724,7 +7689,7 @@ ngx_http_js_init_conf_vm(ngx_conf_t *cf, ngx_js_loc_conf_t *conf)
     options.engine = conf->type;
 
     jmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_js_module);
-    ngx_http_js_uptr[NGX_JS_MAIN_CONF_INDEX] = (uintptr_t) jmcf;
+    ngx_http_js_uptr[NGX_JS_EXTERNAL_MAIN_CONF] = (uintptr_t) jmcf;
 
     if (conf->type == NGX_ENGINE_NJS) {
         options.u.njs.metas = &ngx_http_js_metas;
@@ -8236,36 +8201,6 @@ ngx_http_js_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
 }
 
 
-static ngx_ssl_t *
-ngx_http_js_ssl(ngx_http_request_t *r)
-{
-#if (NGX_HTTP_SSL)
-    ngx_http_js_loc_conf_t  *jlcf;
-
-    jlcf = ngx_http_get_module_loc_conf(r, ngx_http_js_module);
-
-    return jlcf->ssl;
-#else
-    return NULL;
-#endif
-}
-
-
-static ngx_flag_t
-ngx_http_js_ssl_verify(ngx_http_request_t *r)
-{
-#if (NGX_HTTP_SSL)
-    ngx_http_js_loc_conf_t  *jlcf;
-
-    jlcf = ngx_http_get_module_loc_conf(r, ngx_http_js_module);
-
-    return jlcf->ssl_verify;
-#else
-    return 0;
-#endif
-}
-
-
 static ngx_int_t
 ngx_http_js_parse_unsafe_uri(ngx_http_request_t *r, njs_str_t *uri,
     njs_str_t *args)
diff --git a/nginx/ngx_js.h b/nginx/ngx_js.h
index 032bd415..257227e5 100644
--- a/nginx/ngx_js.h
+++ b/nginx/ngx_js.h
@@ -80,9 +80,7 @@ typedef ngx_pool_t *(*ngx_external_pool_pt)(njs_external_ptr_t e);
 typedef void (*ngx_js_event_finalize_pt)(njs_external_ptr_t e, ngx_int_t rc);
 typedef ngx_resolver_t *(*ngx_external_resolver_pt)(njs_external_ptr_t e);
 typedef ngx_msec_t (*ngx_external_timeout_pt)(njs_external_ptr_t e);
-typedef ngx_flag_t (*ngx_external_flag_pt)(njs_external_ptr_t e);
-typedef ngx_flag_t (*ngx_external_size_pt)(njs_external_ptr_t e);
-typedef ngx_ssl_t *(*ngx_external_ssl_pt)(njs_external_ptr_t e);
+typedef ngx_js_loc_conf_t *(*ngx_js_external_loc_conf_pt)(njs_external_ptr_t e);
 typedef ngx_js_ctx_t *(*ngx_js_external_ctx_pt)(njs_external_ptr_t e);
 
 
@@ -272,31 +270,35 @@ struct ngx_engine_s {
 };
 
 
+enum {
+    NGX_JS_EXTERNAL_CONNECTION = 0,
+    NGX_JS_EXTERNAL_POOL,
+    NGX_JS_EXTERNAL_RESOLVER,
+    NGX_JS_EXTERNAL_RESOLVER_TIMEOUT,
+    NGX_JS_EXTERNAL_EVENT_FINALIZE,
+    NGX_JS_EXTERNAL_LOC_CONF,
+    NGX_JS_EXTERNAL_CTX,
+    NGX_JS_EXTERNAL_MAIN_CONF,
+};
+
 #define ngx_external_connection(vm, e)                                        \
-    (*((ngx_connection_t **) ((u_char *) (e) + njs_vm_meta(vm, 0))))
+    (*((ngx_connection_t **)                                                  \
+       ((u_char *) (e) + njs_vm_meta(vm, NGX_JS_EXTERNAL_CONNECTION))))
 #define ngx_external_pool(vm, e)                                              \
-    ((ngx_external_pool_pt) njs_vm_meta(vm, 1))(e)
+    ((ngx_external_pool_pt) njs_vm_meta(vm, NGX_JS_EXTERNAL_POOL))(e)
 #define ngx_external_resolver(vm, e)                                          \
-    ((ngx_external_resolver_pt) njs_vm_meta(vm, 2))(e)
+    ((ngx_external_resolver_pt) njs_vm_meta(vm, NGX_JS_EXTERNAL_RESOLVER))(e)
 #define ngx_external_resolver_timeout(vm, e)                                  \
-    ((ngx_external_timeout_pt) njs_vm_meta(vm, 3))(e)
+    ((ngx_external_timeout_pt)                                                \
+      njs_vm_meta(vm, NGX_JS_EXTERNAL_RESOLVER_TIMEOUT))(e)
 #define ngx_external_event_finalize(vm) \
-    ((ngx_js_event_finalize_pt) njs_vm_meta(vm, 4))
-#define ngx_external_ssl(vm, e)                                               \
-    ((ngx_external_ssl_pt) njs_vm_meta(vm, 5))(e)
-#define ngx_external_ssl_verify(vm, e)                                        \
-    ((ngx_external_flag_pt) njs_vm_meta(vm, 6))(e)
-#define ngx_external_fetch_timeout(vm, e)                                     \
-    ((ngx_external_timeout_pt) njs_vm_meta(vm, 7))(e)
-#define ngx_external_buffer_size(vm, e)                                       \
-    ((ngx_external_size_pt) njs_vm_meta(vm, 8))(e)
-#define ngx_external_max_response_buffer_size(vm, e)                          \
-    ((ngx_external_size_pt) njs_vm_meta(vm, 9))(e)
-#define NGX_JS_MAIN_CONF_INDEX  10
-#define ngx_main_conf(vm)                                                     \
-	((ngx_js_main_conf_t *) njs_vm_meta(vm, NGX_JS_MAIN_CONF_INDEX))
+    ((ngx_js_event_finalize_pt) njs_vm_meta(vm, NGX_JS_EXTERNAL_EVENT_FINALIZE))
+#define ngx_external_loc_conf(vm, e)                                          \
+    ((ngx_js_external_loc_conf_pt) njs_vm_meta(vm, NGX_JS_EXTERNAL_LOC_CONF))(e)
 #define ngx_external_ctx(vm, e) \
-    ((ngx_js_external_ctx_pt) njs_vm_meta(vm, 11))(e)
+    ((ngx_js_external_ctx_pt) njs_vm_meta(vm, NGX_JS_EXTERNAL_CTX))(e)
+#define ngx_main_conf(vm)                                                     \
+	((ngx_js_main_conf_t *) njs_vm_meta(vm, NGX_JS_EXTERNAL_MAIN_CONF))
 
 
 #define ngx_js_prop(vm, type, value, start, len)                              \
@@ -367,29 +369,33 @@ JSValue ngx_qjs_ext_fetch(JSContext *cx, JSValueConst this_val, int argc,
 #define ngx_qjs_meta(cx, i)                                                  \
     ((uintptr_t *) JS_GetRuntimeOpaque(JS_GetRuntime(cx)))[i]
 #define ngx_qjs_external_connection(cx, e)                                   \
-    (*((ngx_connection_t **) ((u_char *) (e) + ngx_qjs_meta(cx, 0))))
+    (*((ngx_connection_t **)                                                 \
+       ((u_char *) (e) + ngx_qjs_meta(cx, NGX_JS_EXTERNAL_CONNECTION))))
 #define ngx_qjs_external_pool(cx, e)                                         \
-    ((ngx_external_pool_pt) ngx_qjs_meta(cx, 1))(e)
+    ((ngx_external_pool_pt) ngx_qjs_meta(cx, NGX_JS_EXTERNAL_POOL))(e)
 #define ngx_qjs_external_resolver(cx, e)                                     \
-    ((ngx_external_resolver_pt) ngx_qjs_meta(cx, 2))(e)
+    ((ngx_external_resolver_pt) ngx_qjs_meta(cx, NGX_JS_EXTERNAL_RESOLVER))(e)
 #define ngx_qjs_external_resolver_timeout(cx, e)                             \
-    ((ngx_external_timeout_pt) ngx_qjs_meta(cx, 3))(e)
+    ((ngx_external_timeout_pt)                                               \
+     ngx_qjs_meta(cx, NGX_JS_EXTERNAL_RESOLVER_TIMEOUT))(e)
 #define ngx_qjs_external_event_finalize(cx)                                  \
-    ((ngx_js_event_finalize_pt) ngx_qjs_meta(cx, 4))
+    ((ngx_js_event_finalize_pt) ngx_qjs_meta(cx, NGX_JS_EXTERNAL_EVENT_FINALIZE))
+#define ngx_qjs_external_loc_conf(cx, e)                                     \
+    ((ngx_js_external_loc_conf_pt) ngx_qjs_meta(cx, NGX_JS_EXTERNAL_LOC_CONF))(e)
 #define ngx_qjs_external_ssl(cx, e)                                          \
-    ((ngx_external_ssl_pt) ngx_qjs_meta(cx, 5))(e)
+    (ngx_qjs_external_loc_conf(cx, e)->ssl)
 #define ngx_qjs_external_ssl_verify(cx, e)                                   \
-    ((ngx_external_flag_pt) ngx_qjs_meta(cx, 6))(e)
+    (ngx_qjs_external_loc_conf(cx, e)->ssl_verify)
 #define ngx_qjs_external_fetch_timeout(cx, e)                                \
-    ((ngx_external_timeout_pt) ngx_qjs_meta(cx, 7))(e)
+    (ngx_qjs_external_loc_conf(cx, e)->timeout)
 #define ngx_qjs_external_buffer_size(cx, e)                                  \
-    ((ngx_external_size_pt) ngx_qjs_meta(cx, 8))(e)
+    (ngx_qjs_external_loc_conf(cx, e)->buffer_size)
 #define ngx_qjs_external_max_response_buffer_size(cx, e)                     \
-    ((ngx_external_size_pt) ngx_qjs_meta(cx, 9))(e)
-#define ngx_qjs_main_conf(cx)                                                \
-    ((ngx_js_main_conf_t *) ngx_qjs_meta(cx, NGX_JS_MAIN_CONF_INDEX))
+    (ngx_qjs_external_loc_conf(cx, e)->max_response_body_size)
 #define ngx_qjs_external_ctx(cx, e)                                          \
-    ((ngx_js_external_ctx_pt) ngx_qjs_meta(cx, 11))(e)
+    ((ngx_js_external_ctx_pt) ngx_qjs_meta(cx, NGX_JS_EXTERNAL_CTX))(e)
+#define ngx_qjs_main_conf(cx)                                                \
+    ((ngx_js_main_conf_t *) ngx_qjs_meta(cx, NGX_JS_EXTERNAL_MAIN_CONF))
 
 extern qjs_module_t  qjs_webcrypto_module;
 extern qjs_module_t  qjs_xml_module;
diff --git a/nginx/ngx_js_fetch.c b/nginx/ngx_js_fetch.c
index faa38aab..1c74bde6 100644
--- a/nginx/ngx_js_fetch.c
+++ b/nginx/ngx_js_fetch.c
@@ -40,7 +40,7 @@ static njs_int_t ngx_js_headers_inherit(njs_vm_t *vm, ngx_js_headers_t *headers,
 static njs_int_t ngx_js_headers_fill(njs_vm_t *vm, ngx_js_headers_t *headers,
     njs_value_t *init);
 static ngx_js_fetch_t *ngx_js_fetch_alloc(njs_vm_t *vm, ngx_pool_t *pool,
-    ngx_log_t *log);
+    ngx_log_t *log, ngx_js_loc_conf_t *conf);
 static void ngx_js_fetch_error(ngx_js_http_t *http, const char *err);
 static void ngx_js_fetch_destructor(ngx_js_event_t *event);
 static njs_int_t ngx_js_fetch_promissified_result(njs_vm_t *vm,
@@ -537,7 +537,8 @@ ngx_js_ext_fetch(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     c = ngx_external_connection(vm, external);
     pool = ngx_external_pool(vm, external);
 
-    fetch = ngx_js_fetch_alloc(vm, pool, c->log);
+    fetch = ngx_js_fetch_alloc(vm, pool, c->log,
+                               ngx_external_loc_conf(vm, external));
     if (fetch == NULL) {
         return NJS_ERROR;
     }
@@ -550,15 +551,13 @@ ngx_js_ext_fetch(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
     }
 
     http->response.url = request.url;
-    http->timeout = ngx_external_fetch_timeout(vm, external);
-    http->buffer_size = ngx_external_buffer_size(vm, external);
-    http->max_response_body_size =
-                           ngx_external_max_response_buffer_size(vm, external);
+    http->buffer_size = http->conf->buffer_size;
+    http->max_response_body_size = http->conf->max_response_body_size;
 
 #if (NGX_SSL)
     if (u.default_port == 443) {
-        http->ssl = ngx_external_ssl(vm, external);
-        http->ssl_verify = ngx_external_ssl_verify(vm, external);
+        http->ssl = http->conf->ssl;
+        http->ssl_verify = http->conf->ssl_verify;
     }
 #endif
 
@@ -1134,7 +1133,8 @@ ngx_js_headers_fill(njs_vm_t *vm, ngx_js_headers_t *headers, njs_value_t *init)
 
 
 static ngx_js_fetch_t *
-ngx_js_fetch_alloc(njs_vm_t *vm, ngx_pool_t *pool, ngx_log_t *log)
+ngx_js_fetch_alloc(njs_vm_t *vm, ngx_pool_t *pool, ngx_log_t *log,
+    ngx_js_loc_conf_t *conf)
 {
     njs_int_t        ret;
     ngx_js_ctx_t    *ctx;
@@ -1152,8 +1152,7 @@ ngx_js_fetch_alloc(njs_vm_t *vm, ngx_pool_t *pool, ngx_log_t *log)
 
     http->pool = pool;
     http->log = log;
-
-    http->timeout = 10000;
+    http->conf = conf;
 
     http->http_parse.content_length_n = -1;
 
diff --git a/nginx/ngx_js_http.c b/nginx/ngx_js_http.c
index 4555a7ac..92e7b94b 100644
--- a/nginx/ngx_js_http.c
+++ b/nginx/ngx_js_http.c
@@ -255,8 +255,8 @@ ngx_js_http_connect(ngx_js_http_t *http)
 
     http->process = ngx_js_http_process_status_line;
 
-    ngx_add_timer(http->peer.connection->read, http->timeout);
-    ngx_add_timer(http->peer.connection->write, http->timeout);
+    ngx_add_timer(http->peer.connection->read, http->conf->timeout);
+    ngx_add_timer(http->peer.connection->write, http->conf->timeout);
 
 #if (NGX_SSL)
     if (http->ssl != NULL && http->peer.connection->ssl == NULL) {
@@ -522,7 +522,7 @@ ngx_js_http_write_handler(ngx_event_t *wev)
     }
 
     if (!wev->timer_set) {
-        ngx_add_timer(wev, http->timeout);
+        ngx_add_timer(wev, http->conf->timeout);
     }
 }
 
diff --git a/nginx/ngx_js_http.h b/nginx/ngx_js_http.h
index 63d0f035..027d0b21 100644
--- a/nginx/ngx_js_http.h
+++ b/nginx/ngx_js_http.h
@@ -114,8 +114,8 @@ struct ngx_js_http_s {
     in_port_t                      port;
 
     ngx_peer_connection_t          peer;
-    ngx_msec_t                     timeout;
 
+    ngx_js_loc_conf_t             *conf;
     ngx_int_t                      buffer_size;
     ngx_int_t                      max_response_body_size;
 
diff --git a/nginx/ngx_qjs_fetch.c b/nginx/ngx_qjs_fetch.c
index 46b54eab..f855e099 100644
--- a/nginx/ngx_qjs_fetch.c
+++ b/nginx/ngx_qjs_fetch.c
@@ -39,7 +39,7 @@ static ngx_int_t ngx_qjs_headers_inherit(JSContext *cx,
 static ngx_int_t ngx_qjs_headers_fill(JSContext *cx, ngx_js_headers_t *headers,
     JSValue init);
 static ngx_qjs_fetch_t *ngx_qjs_fetch_alloc(JSContext *cx, ngx_pool_t *pool,
-    ngx_log_t *log);
+    ngx_log_t *log, ngx_js_loc_conf_t *conf);
 static void ngx_qjs_fetch_error(ngx_js_http_t *http, const char *err);
 static void ngx_qjs_fetch_destructor(ngx_qjs_event_t *event);
 static void ngx_qjs_fetch_done(ngx_qjs_fetch_t *fetch, JSValue retval,
@@ -257,7 +257,8 @@ ngx_qjs_ext_fetch(JSContext *cx, JSValueConst this_val, int argc,
     c = ngx_qjs_external_connection(cx, external);
     pool = ngx_qjs_external_pool(cx, external);
 
-    fetch = ngx_qjs_fetch_alloc(cx, pool, c->log);
+    fetch = ngx_qjs_fetch_alloc(cx, pool, c->log,
+                                ngx_qjs_external_loc_conf(cx, external));
     if (fetch == NULL) {
         return JS_ThrowOutOfMemory(cx);
     }
@@ -271,7 +272,6 @@ ngx_qjs_ext_fetch(JSContext *cx, JSValueConst this_val, int argc,
 
     http = &fetch->http;
     http->response.url = request.url;
-    http->timeout = ngx_qjs_external_fetch_timeout(cx, external);
     http->buffer_size = ngx_qjs_external_buffer_size(cx, external);
     http->max_response_body_size =
                         ngx_qjs_external_max_response_buffer_size(cx, external);
@@ -1193,7 +1193,8 @@ fail:
 
 
 static ngx_qjs_fetch_t *
-ngx_qjs_fetch_alloc(JSContext *cx, ngx_pool_t *pool, ngx_log_t *log)
+ngx_qjs_fetch_alloc(JSContext *cx, ngx_pool_t *pool, ngx_log_t *log,
+    ngx_js_loc_conf_t *conf)
 {
     ngx_js_ctx_t     *ctx;
     ngx_js_http_t    *http;
@@ -1210,7 +1211,7 @@ ngx_qjs_fetch_alloc(JSContext *cx, ngx_pool_t *pool, ngx_log_t *log)
     http->pool = pool;
     http->log = log;
 
-    http->timeout = 10000;
+    http->conf = conf;
 
     http->http_parse.content_length_n = -1;
 
diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c
index 5ccc08a2..1257abb5 100644
--- a/nginx/ngx_stream_js_module.c
+++ b/nginx/ngx_stream_js_module.c
@@ -194,10 +194,8 @@ static void ngx_stream_qjs_periodic_finalizer(JSRuntime *rt, JSValue val);
 static ngx_pool_t *ngx_stream_js_pool(ngx_stream_session_t *s);
 static ngx_resolver_t *ngx_stream_js_resolver(ngx_stream_session_t *s);
 static ngx_msec_t ngx_stream_js_resolver_timeout(ngx_stream_session_t *s);
-static ngx_msec_t ngx_stream_js_fetch_timeout(ngx_stream_session_t *s);
-static size_t ngx_stream_js_buffer_size(ngx_stream_session_t *s);
-static size_t ngx_stream_js_max_response_buffer_size(ngx_stream_session_t *s);
 static void ngx_stream_js_event_finalize(ngx_stream_session_t *s, ngx_int_t rc);
+static ngx_js_loc_conf_t *ngx_stream_js_srv_conf(ngx_stream_session_t *s);
 static ngx_js_ctx_t *ngx_stream_js_ctx(ngx_stream_session_t *s);
 
 static void ngx_stream_js_periodic_handler(ngx_event_t *ev);
@@ -225,8 +223,6 @@ static char *ngx_stream_js_merge_srv_conf(ngx_conf_t *cf, void *parent,
 static char *ngx_stream_js_shared_dict_zone(ngx_conf_t *cf, ngx_command_t *cmd,
     void *conf);
 
-static ngx_ssl_t *ngx_stream_js_ssl(ngx_stream_session_t *s);
-static ngx_flag_t ngx_stream_js_ssl_verify(ngx_stream_session_t *s);
 
 static ngx_conf_bitmask_t  ngx_stream_js_engines[] = {
     { ngx_string("njs"), NGX_ENGINE_NJS },
@@ -710,13 +706,9 @@ static uintptr_t ngx_stream_js_uptr[] = {
     (uintptr_t) ngx_stream_js_resolver,
     (uintptr_t) ngx_stream_js_resolver_timeout,
     (uintptr_t) ngx_stream_js_event_finalize,
-    (uintptr_t) ngx_stream_js_ssl,
-    (uintptr_t) ngx_stream_js_ssl_verify,
-    (uintptr_t) ngx_stream_js_fetch_timeout,
-    (uintptr_t) ngx_stream_js_buffer_size,
-    (uintptr_t) ngx_stream_js_max_response_buffer_size,
-    (uintptr_t) 0 /* main_conf ptr */,
+    (uintptr_t) ngx_stream_js_srv_conf,
     (uintptr_t) ngx_stream_js_ctx,
+    (uintptr_t) 0 /* main_conf ptr */,
 };
 
 
@@ -1891,39 +1883,6 @@ ngx_stream_js_resolver_timeout(ngx_stream_session_t *s)
 }
 
 
-static ngx_msec_t
-ngx_stream_js_fetch_timeout(ngx_stream_session_t *s)
-{
-    ngx_stream_js_srv_conf_t  *jscf;
-
-    jscf = ngx_stream_get_module_srv_conf(s, ngx_stream_js_module);
-
-    return jscf->timeout;
-}
-
-
-static size_t
-ngx_stream_js_buffer_size(ngx_stream_session_t *s)
-{
-    ngx_stream_js_srv_conf_t  *jscf;
-
-    jscf = ngx_stream_get_module_srv_conf(s, ngx_stream_js_module);
-
-    return jscf->buffer_size;
-}
-
-
-static size_t
-ngx_stream_js_max_response_buffer_size(ngx_stream_session_t *s)
-{
-    ngx_stream_js_srv_conf_t  *jscf;
-
-    jscf = ngx_stream_get_module_srv_conf(s, ngx_stream_js_module);
-
-    return jscf->max_response_body_size;
-}
-
-
 static void
 ngx_stream_js_event_finalize(ngx_stream_session_t *s, ngx_int_t rc)
 {
@@ -1946,6 +1905,13 @@ ngx_stream_js_event_finalize(ngx_stream_session_t *s, ngx_int_t rc)
 }
 
 
+static ngx_js_loc_conf_t *
+ngx_stream_js_srv_conf(ngx_stream_session_t *s)
+{
+    return ngx_stream_get_module_srv_conf(s, ngx_stream_js_module);
+}
+
+
 static ngx_js_ctx_t *
 ngx_stream_js_ctx(ngx_stream_session_t *s)
 {
@@ -3025,7 +2991,7 @@ ngx_stream_js_init_conf_vm(ngx_conf_t *cf, ngx_js_loc_conf_t *conf)
     options.engine = conf->type;
 
     jmcf = ngx_stream_conf_get_module_main_conf(cf, ngx_stream_js_module);
-    ngx_stream_js_uptr[NGX_JS_MAIN_CONF_INDEX] = (uintptr_t) jmcf;
+    ngx_stream_js_uptr[NGX_JS_EXTERNAL_MAIN_CONF] = (uintptr_t) jmcf;
 
     if (conf->type == NGX_ENGINE_NJS) {
         options.u.njs.metas = &ngx_stream_js_metas;
@@ -3716,33 +3682,3 @@ ngx_stream_js_init(ngx_conf_t *cf)
 
     return NGX_OK;
 }
-
-
-static ngx_ssl_t *
-ngx_stream_js_ssl(ngx_stream_session_t *s)
-{
-#if (NGX_STREAM_SSL)
-    ngx_stream_js_srv_conf_t  *jscf;
-
-    jscf = ngx_stream_get_module_srv_conf(s, ngx_stream_js_module);
-
-    return jscf->ssl;
-#else
-    return NULL;
-#endif
-}
-
-
-static ngx_flag_t
-ngx_stream_js_ssl_verify(ngx_stream_session_t *s)
-{
-#if (NGX_STREAM_SSL)
-    ngx_stream_js_srv_conf_t  *jscf;
-
-    jscf = ngx_stream_get_module_srv_conf(s, ngx_stream_js_module);
-
-    return jscf->ssl_verify;
-#else
-    return 0;
-#endif
-}


More information about the nginx-devel mailing list