Merge pull request #139 from chaizhenhua/remotes/trunk

Fixed fd leackage after reload
This commit is contained in:
Breno Silva 2013-09-04 05:13:40 -07:00
commit 10fd40fb0d

View File

@ -61,7 +61,7 @@ static char *ngx_http_modsecurity_enable(ngx_conf_t *cf, ngx_command_t *cmd, voi
static ngx_http_modsecurity_ctx_t * ngx_http_modsecurity_create_ctx(ngx_http_request_t *r); static ngx_http_modsecurity_ctx_t * ngx_http_modsecurity_create_ctx(ngx_http_request_t *r);
static int ngx_http_modsecurity_drop_action(request_rec *r); static int ngx_http_modsecurity_drop_action(request_rec *r);
static void ngx_http_modsecurity_terminate(ngx_cycle_t *cycle); static void ngx_http_modsecurity_terminate(void *data);
static void ngx_http_modsecurity_cleanup(void *data); static void ngx_http_modsecurity_cleanup(void *data);
static int ngx_http_modsecurity_save_headers_in_visitor(void *data, const char *key, const char *value); static int ngx_http_modsecurity_save_headers_in_visitor(void *data, const char *key, const char *value);
@ -115,8 +115,8 @@ ngx_module_t ngx_http_modsecurity = {
ngx_http_modsecurity_init_process, /* init process */ ngx_http_modsecurity_init_process, /* init process */
NULL, /* init thread */ NULL, /* init thread */
NULL, /* exit thread */ NULL, /* exit thread */
ngx_http_modsecurity_terminate, /* exit process */ NULL, /* exit process */
ngx_http_modsecurity_terminate, /* exit master */ NULL, /* exit master */
NGX_MODULE_V1_PADDING NGX_MODULE_V1_PADDING
}; };
@ -886,6 +886,15 @@ static server_rec *modsec_server = NULL;
static ngx_int_t static ngx_int_t
ngx_http_modsecurity_preconfiguration(ngx_conf_t *cf) ngx_http_modsecurity_preconfiguration(ngx_conf_t *cf)
{ {
ngx_pool_cleanup_t *cln;
cln = ngx_pool_cleanup_add(cf->pool, 0);
if (cln == NULL) {
return NGX_ERROR;
}
cln->handler = ngx_http_modsecurity_terminate;
/* XXX: temporary hack, nginx uses pcre as well and hijacks these two */ /* XXX: temporary hack, nginx uses pcre as well and hijacks these two */
pcre_malloc = modsec_pcre_malloc; pcre_malloc = modsec_pcre_malloc;
pcre_free = modsec_pcre_free; pcre_free = modsec_pcre_free;
@ -913,7 +922,7 @@ ngx_http_modsecurity_preconfiguration(ngx_conf_t *cf)
static void static void
ngx_http_modsecurity_terminate(ngx_cycle_t *cycle) ngx_http_modsecurity_terminate(void *data)
{ {
if (modsec_server) { if (modsec_server) {
modsecTerminate(); modsecTerminate();