diff --git a/src/cfgparse.c b/src/cfgparse.c index 0b165e611..2980ae10d 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -3023,13 +3023,13 @@ stats_error_parsing: goto out; } - if ((newsrv = (struct server *)calloc(1, sizeof(struct server))) == NULL) { - Alert("parsing [%s:%d] : out of memory.\n", file, linenum); - err_code |= ERR_ALERT | ERR_ABORT; - goto out; - } - if (!defsrv) { + if ((newsrv = (struct server *)calloc(1, sizeof(struct server))) == NULL) { + Alert("parsing [%s:%d] : out of memory.\n", file, linenum); + err_code |= ERR_ALERT | ERR_ABORT; + goto out; + } + /* the servers are linked backwards first */ newsrv->next = curproxy->srv; curproxy->srv = newsrv; diff --git a/src/haproxy.c b/src/haproxy.c index c44d46988..d8c584c5c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -854,10 +854,15 @@ void deinit(void) l = p->listen; while (l) { l_next = l->next; + free(l->name); + free(l->counters); free(l); l = l_next; }/* end while(l) */ + free(p->desc); + free(p->fwdfor_hdr_name); + req_acl_free(&p->req_acl); pool_destroy2(p->req_cap_pool);