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

This commit is contained in:
Igor Sysoev committed 2008-02-28 20:09:39 +00:00
1 parent 8ee01f5cb8
commit 7c4cf27aff
1 file changed
+23 -12
+23 -12
View File
@@ -212,14 +212,13 @@ ngx_resolve_name(ngx_resolver_ctx_t *ctx)
return NGX_OK;
}
/* lock alloc mutex */
/* NGX_ERROR */
if (ctx->event) {
ngx_resolver_free_locked(r, ctx->event);
ctx->event = NULL;
ngx_resolver_free(r, ctx->event);
}
/* unlock alloc mutex */
ngx_resolver_free(r, ctx);
return NGX_ERROR;
}
@@ -280,7 +279,15 @@ done:
/* 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 */
/* lock alloc mutex */
if (ctx->event) {
ngx_resolver_free_locked(r, ctx->event);
ngx_resolver_free(r, ctx->event);
}
ngx_resolver_free_locked(r, ctx);
/* unlock alloc mutex */
ngx_resolver_free(r, ctx);
return NGX_ERROR;
}
@@ -640,7 +643,15 @@ done:
/* 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 */
}