aboutsummaryrefslogtreecommitdiff
path: root/nginx/ngx_http_js_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'nginx/ngx_http_js_module.c')
-rw-r--r--nginx/ngx_http_js_module.c63
1 files changed, 56 insertions, 7 deletions
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c
index 5bf28d3c..56001789 100644
--- a/nginx/ngx_http_js_module.c
+++ b/nginx/ngx_http_js_module.c
@@ -179,6 +179,13 @@ static njs_host_event_t ngx_http_js_set_timer(njs_external_ptr_t external,
static void ngx_http_js_clear_timer(njs_external_ptr_t external,
njs_host_event_t event);
static void ngx_http_js_timer_handler(ngx_event_t *ev);
+static ngx_pool_t *ngx_http_js_pool(njs_vm_t *vm, ngx_http_request_t *r);
+static ngx_resolver_t *ngx_http_js_resolver(njs_vm_t *vm,
+ ngx_http_request_t *r);
+static ngx_msec_t ngx_http_js_resolver_timeout(njs_vm_t *vm,
+ ngx_http_request_t *r);
+static void ngx_http_js_handle_vm_event(ngx_http_request_t *r,
+ njs_vm_event_t vm_event, njs_value_t *args, njs_uint_t nargs);
static void ngx_http_js_handle_event(ngx_http_request_t *r,
njs_vm_event_t vm_event, njs_value_t *args, njs_uint_t nargs);
@@ -576,11 +583,15 @@ static njs_vm_ops_t ngx_http_js_ops = {
static uintptr_t ngx_http_js_uptr[] = {
offsetof(ngx_http_request_t, connection),
+ (uintptr_t) ngx_http_js_pool,
+ (uintptr_t) ngx_http_js_resolver,
+ (uintptr_t) ngx_http_js_resolver_timeout,
+ (uintptr_t) ngx_http_js_handle_event,
};
static njs_vm_meta_t ngx_http_js_metas = {
- .size = 1,
+ .size = 5,
.values = ngx_http_js_uptr
};
@@ -2754,7 +2765,7 @@ ngx_http_js_subrequest_done(ngx_http_request_t *r, void *data, ngx_int_t rc)
return NGX_ERROR;
}
- ngx_http_js_handle_event(r->parent, vm_event, njs_value_arg(&reply), 1);
+ ngx_http_js_handle_vm_event(r->parent, vm_event, njs_value_arg(&reply), 1);
return NGX_OK;
}
@@ -2895,7 +2906,6 @@ ngx_http_js_clear_timer(njs_external_ptr_t external, njs_host_event_t event)
static void
ngx_http_js_timer_handler(ngx_event_t *ev)
{
- ngx_connection_t *c;
ngx_http_request_t *r;
ngx_http_js_event_t *js_event;
@@ -2903,16 +2913,41 @@ ngx_http_js_timer_handler(ngx_event_t *ev)
r = js_event->request;
- c = r->connection;
-
ngx_http_js_handle_event(r, js_event->vm_event, NULL, 0);
+}
+
+
+static ngx_pool_t *
+ngx_http_js_pool(njs_vm_t *vm, ngx_http_request_t *r)
+{
+ return r->pool;
+}
- ngx_http_run_posted_requests(c);
+
+static ngx_resolver_t *
+ngx_http_js_resolver(njs_vm_t *vm, ngx_http_request_t *r)
+{
+ ngx_http_core_loc_conf_t *clcf;
+
+ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
+ return clcf->resolver;
+}
+
+
+static ngx_msec_t
+ngx_http_js_resolver_timeout(njs_vm_t *vm, ngx_http_request_t *r)
+{
+ ngx_http_core_loc_conf_t *clcf;
+
+ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
+ return clcf->resolver_timeout;
}
static void
-ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
+ngx_http_js_handle_vm_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
njs_value_t *args, njs_uint_t nargs)
{
njs_int_t rc;
@@ -2925,6 +2960,10 @@ ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
rc = njs_vm_run(ctx->vm);
+ ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
+ "http js post event handler rc: %i event: %p",
+ (ngx_int_t) rc, vm_event);
+
if (rc == NJS_ERROR) {
njs_vm_retval_string(ctx->vm, &exception);
@@ -2940,6 +2979,16 @@ ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
}
+static void
+ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
+ njs_value_t *args, njs_uint_t nargs)
+{
+ ngx_http_js_handle_vm_event(r, vm_event, args, nargs);
+
+ ngx_http_run_posted_requests(r->connection);
+}
+
+
static char *
ngx_http_js_init_main_conf(ngx_conf_t *cf, void *conf)
{