fix memory leaks, use unlocked ngx_resolver_free() for seldom failed cases

This commit is contained in:
Igor Sysoev 2008-02-28 20:09:39 +00:00
parent 8ee01f5cb8
commit 7c4cf27aff

View File

@ -212,14 +212,13 @@ ngx_resolve_name(ngx_resolver_ctx_t *ctx)
return NGX_OK; return NGX_OK;
} }
/* lock alloc mutex */ /* NGX_ERROR */
if (ctx->event) { if (ctx->event) {
ngx_resolver_free_locked(r, ctx->event); ngx_resolver_free(r, ctx->event);
ctx->event = NULL;
} }
/* unlock alloc mutex */ ngx_resolver_free(r, ctx);
return NGX_ERROR; return NGX_ERROR;
} }
@ -280,7 +279,15 @@ done:
/* unlock name mutex */ /* unlock name mutex */
ngx_resolver_free(r, ctx); /* lock alloc mutex */
if (ctx->event) {
ngx_resolver_free_locked(r, ctx->event);
}
ngx_resolver_free_locked(r, ctx);
/* unlock alloc mutex */
} }
@ -573,15 +580,11 @@ failed:
/* unlock addr mutex */ /* unlock addr mutex */
/* lock alloc mutex */
if (ctx->event) { if (ctx->event) {
ngx_resolver_free_locked(r, ctx->event); ngx_resolver_free(r, ctx->event);
} }
ngx_resolver_free_locked(r, ctx); ngx_resolver_free(r, ctx);
/* unlock alloc mutex */
return NGX_ERROR; return NGX_ERROR;
} }
@ -640,7 +643,15 @@ done:
/* unlock addr mutex */ /* unlock addr mutex */
ngx_resolver_free(r, ctx); /* lock alloc mutex */
if (ctx->event) {
ngx_resolver_free_locked(r, ctx->event);
}
ngx_resolver_free_locked(r, ctx);
/* unlock alloc mutex */
} }