@@ -251,41 +251,6 @@ ngx_http_modsecurity_cleanup(void *data)
251
251
#endif
252
252
}
253
253
254
- static int lazy_loading_rules (ngx_http_request_t * r ) {
255
- int rules ;
256
- const char * error ;
257
- ngx_http_modsecurity_conf_t * mcf = ngx_http_get_module_loc_conf (r , ngx_http_modsecurity_module );
258
- #define show_loaded_rules (message ) \
259
- if (rules >= 0) { \
260
- ngx_log_error(NGX_LOG_NOTICE, r->connection->log, 0, \
261
- "lazy-load %d rules from %s", rules, message); \
262
- } else { \
263
- goto clean; \
264
- }
265
-
266
- if (mcf -> rules_loaded != NGX_CONF_UNSET ) {
267
- return NGX_OK ;
268
- }
269
- if (mcf -> rules != NGX_CONF_UNSET_PTR ) {
270
- rules = msc_rules_add (mcf -> rules_set , mcf -> rules , & error );
271
- show_loaded_rules (mcf -> rules );
272
- }
273
- if (mcf -> rules_set_file != NGX_CONF_UNSET_PTR ) {
274
- rules = msc_rules_add_file (mcf -> rules_set , mcf -> rules_set_file , & error );
275
- show_loaded_rules (mcf -> rules_set_file );
276
- }
277
- if (mcf -> rules_remote_key != NGX_CONF_UNSET_PTR
278
- && mcf -> rules_remote_server != NGX_CONF_UNSET_PTR ) {
279
- rules = msc_rules_add_remote (mcf -> rules_set ,
280
- mcf -> rules_remote_key , mcf -> rules_remote_server , & error );
281
- show_loaded_rules (mcf -> rules_remote_server );
282
- }
283
- mcf -> rules_loaded = - NGX_CONF_UNSET ;
284
- return NGX_OK ;
285
- clean :
286
- ngx_log_error (NGX_ERROR_ERR , r -> connection -> log , 0 , "cannot load rules: %s" , error );
287
- return NGX_ERROR ;
288
- }
289
254
290
255
ngx_inline ngx_http_modsecurity_ctx_t *
291
256
ngx_http_modsecurity_create_ctx (ngx_http_request_t * r )
@@ -308,10 +273,6 @@ ngx_http_modsecurity_create_ctx(ngx_http_request_t *r)
308
273
309
274
dd ("creating transaction with the following rules: '%p' -- ms: '%p'" , mcf -> rules_set , mmcf -> modsec );
310
275
311
- if (lazy_loading_rules (r ) != NGX_OK ) {
312
- return NGX_CONF_ERROR ;
313
- }
314
-
315
276
if (mcf -> transaction_id ) {
316
277
if (ngx_http_complex_value (r , mcf -> transaction_id , & s ) != NGX_OK ) {
317
278
return NGX_CONF_ERROR ;
@@ -562,14 +523,59 @@ static ngx_http_module_t ngx_http_modsecurity_ctx = {
562
523
};
563
524
564
525
526
+ static int lazy_loading_rules (ngx_http_modsecurity_conf_t * mcf , ngx_log_t * log ) {
527
+ int rules ;
528
+ const char * error ;
529
+ #define show_loaded_rules (message ) \
530
+ if (rules >= 0) { \
531
+ ngx_log_error(NGX_LOG_NOTICE, log, 0, \
532
+ "lazy-load %d rules from %s", rules, message); \
533
+ } else { \
534
+ goto clean; \
535
+ }
536
+
537
+ if (mcf -> rules != NGX_CONF_UNSET_PTR ) {
538
+ rules = msc_rules_add (mcf -> rules_set , mcf -> rules , & error );
539
+ show_loaded_rules (mcf -> rules );
540
+ }
541
+ if (mcf -> rules_set_file != NGX_CONF_UNSET_PTR ) {
542
+ rules = msc_rules_add_file (mcf -> rules_set , mcf -> rules_set_file , & error );
543
+ show_loaded_rules (mcf -> rules_set_file );
544
+ }
545
+ if (mcf -> rules_remote_key != NGX_CONF_UNSET_PTR
546
+ && mcf -> rules_remote_server != NGX_CONF_UNSET_PTR ) {
547
+ rules = msc_rules_add_remote (mcf -> rules_set ,
548
+ mcf -> rules_remote_key , mcf -> rules_remote_server , & error );
549
+ show_loaded_rules (mcf -> rules_remote_server );
550
+ }
551
+ return NGX_OK ;
552
+ clean :
553
+ ngx_log_error (NGX_ERROR_ERR , log , 0 , "cannot load rules: %s" , error );
554
+ return NGX_ERROR ;
555
+ }
556
+
557
+
558
+ static ngx_int_t ngx_http_modsecurity_init_process (ngx_cycle_t * cycle ) {
559
+ ngx_pool_cleanup_t * cleanup ;
560
+ for (cleanup = cycle -> pool -> cleanup ; cleanup ; cleanup = cleanup -> next ) {
561
+ if (cleanup -> handler == ngx_http_modsecurity_cleanup_rules ) {
562
+ if (lazy_loading_rules (cleanup -> data , cycle -> log ) != NGX_OK ) {
563
+ return NGX_ERROR ;
564
+ }
565
+ }
566
+ }
567
+ return NGX_OK ;
568
+ }
569
+
570
+
565
571
ngx_module_t ngx_http_modsecurity_module = {
566
572
NGX_MODULE_V1 ,
567
573
& ngx_http_modsecurity_ctx , /* module context */
568
574
ngx_http_modsecurity_commands , /* module directives */
569
575
NGX_HTTP_MODULE , /* module type */
570
576
NULL , /* init master */
571
577
NULL , /* init module */
572
- NULL , /* init process */
578
+ ngx_http_modsecurity_init_process , /* init process */
573
579
NULL , /* init thread */
574
580
NULL , /* exit thread */
575
581
NULL , /* exit process */
@@ -753,7 +759,6 @@ ngx_http_modsecurity_create_conf(ngx_conf_t *cf)
753
759
conf -> rules_set_file = NGX_CONF_UNSET_PTR ;
754
760
conf -> rules_remote_key = NGX_CONF_UNSET_PTR ;
755
761
conf -> rules_remote_server = NGX_CONF_UNSET_PTR ;
756
- conf -> rules_loaded = NGX_CONF_UNSET ;
757
762
conf -> pool = cf -> pool ;
758
763
conf -> transaction_id = NGX_CONF_UNSET_PTR ;
759
764
#if defined(MODSECURITY_SANITY_CHECKS ) && (MODSECURITY_SANITY_CHECKS )
0 commit comments