@@ -179,6 +179,13 @@ static njs_host_event_t ngx_http_js_set_timer(njs_external_ptr_t external,
179
179
static void ngx_http_js_clear_timer (njs_external_ptr_t external ,
180
180
njs_host_event_t event );
181
181
static void ngx_http_js_timer_handler (ngx_event_t * ev );
182
+ static ngx_pool_t * ngx_http_js_pool (njs_vm_t * vm , ngx_http_request_t * r );
183
+ static ngx_resolver_t * ngx_http_js_resolver (njs_vm_t * vm ,
184
+ ngx_http_request_t * r );
185
+ static ngx_msec_t ngx_http_js_resolver_timeout (njs_vm_t * vm ,
186
+ ngx_http_request_t * r );
187
+ static void ngx_http_js_handle_vm_event (ngx_http_request_t * r ,
188
+ njs_vm_event_t vm_event , njs_value_t * args , njs_uint_t nargs );
182
189
static void ngx_http_js_handle_event (ngx_http_request_t * r ,
183
190
njs_vm_event_t vm_event , njs_value_t * args , njs_uint_t nargs );
184
191
@@ -576,11 +583,15 @@ static njs_vm_ops_t ngx_http_js_ops = {
576
583
577
584
static uintptr_t ngx_http_js_uptr [] = {
578
585
offsetof(ngx_http_request_t , connection ),
586
+ (uintptr_t ) ngx_http_js_pool ,
587
+ (uintptr_t ) ngx_http_js_resolver ,
588
+ (uintptr_t ) ngx_http_js_resolver_timeout ,
589
+ (uintptr_t ) ngx_http_js_handle_event ,
579
590
};
580
591
581
592
582
593
static njs_vm_meta_t ngx_http_js_metas = {
583
- .size = 1 ,
594
+ .size = 5 ,
584
595
.values = ngx_http_js_uptr
585
596
};
586
597
@@ -2754,7 +2765,7 @@ ngx_http_js_subrequest_done(ngx_http_request_t *r, void *data, ngx_int_t rc)
2754
2765
return NGX_ERROR ;
2755
2766
}
2756
2767
2757
- ngx_http_js_handle_event (r -> parent , vm_event , njs_value_arg (& reply ), 1 );
2768
+ ngx_http_js_handle_vm_event (r -> parent , vm_event , njs_value_arg (& reply ), 1 );
2758
2769
2759
2770
return NGX_OK ;
2760
2771
}
@@ -2895,24 +2906,48 @@ ngx_http_js_clear_timer(njs_external_ptr_t external, njs_host_event_t event)
2895
2906
static void
2896
2907
ngx_http_js_timer_handler (ngx_event_t * ev )
2897
2908
{
2898
- ngx_connection_t * c ;
2899
2909
ngx_http_request_t * r ;
2900
2910
ngx_http_js_event_t * js_event ;
2901
2911
2902
2912
js_event = (ngx_http_js_event_t * ) ev -> data ;
2903
2913
2904
2914
r = js_event -> request ;
2905
2915
2906
- c = r -> connection ;
2907
-
2908
2916
ngx_http_js_handle_event (r , js_event -> vm_event , NULL , 0 );
2917
+ }
2918
+
2919
+
2920
+ static ngx_pool_t *
2921
+ ngx_http_js_pool (njs_vm_t * vm , ngx_http_request_t * r )
2922
+ {
2923
+ return r -> pool ;
2924
+ }
2909
2925
2910
- ngx_http_run_posted_requests (c );
2926
+
2927
+ static ngx_resolver_t *
2928
+ ngx_http_js_resolver (njs_vm_t * vm , ngx_http_request_t * r )
2929
+ {
2930
+ ngx_http_core_loc_conf_t * clcf ;
2931
+
2932
+ clcf = ngx_http_get_module_loc_conf (r , ngx_http_core_module );
2933
+
2934
+ return clcf -> resolver ;
2935
+ }
2936
+
2937
+
2938
+ static ngx_msec_t
2939
+ ngx_http_js_resolver_timeout (njs_vm_t * vm , ngx_http_request_t * r )
2940
+ {
2941
+ ngx_http_core_loc_conf_t * clcf ;
2942
+
2943
+ clcf = ngx_http_get_module_loc_conf (r , ngx_http_core_module );
2944
+
2945
+ return clcf -> resolver_timeout ;
2911
2946
}
2912
2947
2913
2948
2914
2949
static void
2915
- ngx_http_js_handle_event (ngx_http_request_t * r , njs_vm_event_t vm_event ,
2950
+ ngx_http_js_handle_vm_event (ngx_http_request_t * r , njs_vm_event_t vm_event ,
2916
2951
njs_value_t * args , njs_uint_t nargs )
2917
2952
{
2918
2953
njs_int_t rc ;
@@ -2925,6 +2960,10 @@ ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
2925
2960
2926
2961
rc = njs_vm_run (ctx -> vm );
2927
2962
2963
+ ngx_log_debug2 (NGX_LOG_DEBUG_HTTP , r -> connection -> log , 0 ,
2964
+ "http js post event handler rc: %i event: %p" ,
2965
+ (ngx_int_t ) rc , vm_event );
2966
+
2928
2967
if (rc == NJS_ERROR ) {
2929
2968
njs_vm_retval_string (ctx -> vm , & exception );
2930
2969
@@ -2940,6 +2979,16 @@ ngx_http_js_handle_event(ngx_http_request_t *r, njs_vm_event_t vm_event,
2940
2979
}
2941
2980
2942
2981
2982
+ static void
2983
+ ngx_http_js_handle_event (ngx_http_request_t * r , njs_vm_event_t vm_event ,
2984
+ njs_value_t * args , njs_uint_t nargs )
2985
+ {
2986
+ ngx_http_js_handle_vm_event (r , vm_event , args , nargs );
2987
+
2988
+ ngx_http_run_posted_requests (r -> connection );
2989
+ }
2990
+
2991
+
2943
2992
static char *
2944
2993
ngx_http_js_init_main_conf (ngx_conf_t * cf , void * conf )
2945
2994
{
0 commit comments