<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>