<div dir="ltr">Dear NGINX community, <br><br>I am developing an NGINX module which 
would check the contents of the request and if the key components found,
 would block it. Currently, it seems to be working correctly, but I 
would like to clarify some parts and make sure that I am not hard-coding
 anything. So, the question is mainly about the request counter. <br>During
 the execution of the request handler (which is registered on the 
HTTP_REWRITE_PHASE), the request counter is kept as it is. But once the 
handler finishes the request processing, the counter is changed to 1. 
But changing the counter to 1 does not seem like a right decision, as 
many other modules more often decrease it in the post_handler or call 
the "finalize request" function. However, the use of "finalize" cannot 
be implemented, as neither connection, nor request should not be 
finalized after the handler execution. Instead, the request needs to be 
handed over to the other phase handlers (return NGX_DECLINED). As for 
the decrementing in the post_handler of the 
ngx_http_read_client_request_body function, on the heavy loads, it 
results in the segfaults. Finally, leaving the counter unchanged 
throughout the process leads to memory leaks. Therefore, the 
above-described value assignment was implemented, but, perhaps, there 
are better ways of handling the request counter issue? And why the 
change in the request counter can cause a segfault in the first place? <br><br>With best regards, <br>doughnut</div>