what's the meaning ? ctx->srv conf = cscfp[s]->ctx->srv conf

Igor Sysoev igor at sysoev.ru
Thu Dec 23 10:11:59 MSK 2010

On Thu, Dec 23, 2010 at 01:46:15AM -0500, garry.lgr wrote:

> [img]http://blog.chinaunix.net/photo/6889_101223144343.jpg[/img]
> I drawed a picture according to the code of the nginx-0.9.1. The top
> part in the picture is built in the ngx_http_block of ngx_http.c.
> When the ngx_http_merge_servers function at line 277 is called,  the
> ctx->srv_conf have hold the address of  cf->ctx->srv_conf. After
> ctx->srv_conf = cscfp[s]->ctx->srv_conf, ctx->srv_conf discard it's
> older address to point to the new address  cscfp[s]->ctx->srv_conf. 

Think ctx->srv_conf like a hidden function parameter available via cf->ctx:

     merge_srv_conf(cf, [ cf->ctx->srv_conf ], ...

> So I think it will generate memory leak.

All memory operated in ngx_http.c and many other files are allocated
from memory pools freed at once. For example, memory in ngx_http.c
is freed after each reconfiguration.

Igor Sysoev

More information about the nginx mailing list