aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2008-02-28 20:09:39 +0000
committerIgor Sysoev <igor@sysoev.ru>2008-02-28 20:09:39 +0000
commit7c4cf27aff2129adf7fc48b85a4e41c13bc34635 (patch)
tree56d50804266d7cb3037772a16b319d83d66b27b6 /src
parent8ee01f5cb8670068ef67a1aa21551b422a0fe039 (diff)
downloadnginx-7c4cf27aff2129adf7fc48b85a4e41c13bc34635.tar.gz
nginx-7c4cf27aff2129adf7fc48b85a4e41c13bc34635.zip
fix memory leaks, use unlocked ngx_resolver_free() for seldom failed cases
Diffstat (limited to 'src')
-rw-r--r--src/core/ngx_resolver.c35
1 files changed, 23 insertions, 12 deletions
diff --git a/src/core/ngx_resolver.c b/src/core/ngx_resolver.c
index 15181dae6..d3e6c43c1 100644
--- a/src/core/ngx_resolver.c
+++ b/src/core/ngx_resolver.c
@@ -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 */
}