Nginx Timer is killing my request pool

Tigran Bayburtsyan tigran.bayburtsyan at gmail.com
Sat Feb 21 20:55:10 UTC 2015


Hi All.

I've created a function for adding my custom ngx_timer , but after 1st time
loop my r->pool is setting to NULL , also it sets NULL my
r->connection->log, and after second loop it throws exception on  *ngx_palloc
*because my r->pool is NULL.
I can't find out why, here is my function

*void add_aling_event(ngx_event_t *e, ngx_http_request_t *r, void
(*handler), int timer)*
*{*
*    if(e)*
*    {*
*        ngx_add_timer(e, timer);*
*        return;*
*    }*
*    ngx_event_t *event=ngx_palloc(r->pool,sizeof(ngx_event_t));*
*    memset(event,0,sizeof(ngx_event_t));*
*    event->data=r;*
*    event->handler=handler;*
*    event->log=r->connection->log;*
*    ngx_add_timer(event, timer);*
*}*

And I'm calling this function like this.

static ngx_int_t ngx_http_aling_handler(ngx_http_request_t *r)
{
    ........
    ........
    add_aling_event(NULL, r, hack_func, 50);
    return NGX_AGAIN;
}

void hack_func(ngx_event_t *e)
{
    ngx_http_request_t *r = e->data;
    ........
    ........

    switch(shmLen[1])
    {
        case 1: // adding chain
        {
            ..........................
*            ..........................*
        };break;
        case 2: // adding last chain
        {
            ..........................
*            ..........................*
        };break;
        default:
        {
            add_aling_event(e, r, hack_func, 50);
        };break;
    }
}

After 1 or 2 calls r->pool is sets to NULL .....

Please help me figure out this issue.
Maybe I'm doing something wrong.
I've did this code using example here
https://github.com/tommywatson/nginx-hello-world-module/blob/master/ngx_http_hello_world_module.c#L104


Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20150222/1cd7e03e/attachment.html>


More information about the nginx-devel mailing list