Thank you Maxim, I just want to release memory l've allocated. One more question, is the context memory automatically removed or is the module responsible for freeing it.
> On May 18, 2017, at 6:32 AM, Maxim Dounin <mdou...@mdounin.ru> wrote: > > Hello! > >> On Wed, May 17, 2017 at 05:53:40PM -0700, Dk Jack wrote: >> >> Hi, >> In my module, I registered a NGX_HTTP_POST_READ_PHASE handler. When this >> handler is invoked, I allocate my module context and attach it to the >> request. I also allocate some other memory and save the pointers to that >> memory in my context. In the POST_READ_PHASE handler, I also register a >> cleanup handler to the request (r->cleanup; ngx_http_cleanup_t >> <http://lxr.nginx.org/ident?_i=ngx_http_cleanup_t>). I assumed this is >> called before the request is freed. >> >> As I expected, my cleanup handler is getting called for most of the >> requests. However, in some cases it doesn't get called. This seems to >> happen mostly for the first request and if and only if the request is a >> very simple url like 'http://servername/' i.e. a simple request which tests >> server is up and running or not. If I add anything more to the uri-path, >> the cleanup handler gets called. Otherwise, it doesn't get called. Seems >> very strange. Could someone more knowledgeable comment on this behavior. >> Thanks. > > HTTP cleanup handlers as added by ngx_http_cleanup_add() are only > called on premature request termination via > ngx_http_terminate_request(). They are to be used if your module > does something that is expected to prevent normal request closing > (for example, via increased r->count), but want nginx to be able > to cancel this activity if it needs to terminate the request > prematurely for some reason (usually due to an error). For > example, upstream module installs a http cleanup handler when it > connects to an upstream server, and aborts the connection if the > cleanup handler is called. > > These handlers are not expected to be called on normal request > completion, if nothing prevents normal close of a request. > > If your goal is to simply release resources when a request is > freed, use a r->pool cleanup handler instead, as added by > ngx_pool_cleanup_add(). > > -- > Maxim Dounin > http://nginx.org/ > _______________________________________________ > nginx-devel mailing list > nginx-devel@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-devel _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-devel