[BUG] cfgparse memory leak and missing free calls in deinit()

Thich patch fixes cfgparser not to leak memory on each
default server statement and adds several missing free
calls in deinit():
 - free(l->name)
 - free(l->counters)
 - free(p->desc);
 - free(p->fwdfor_hdr_name);

None of them are critical, hopefully.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 0b165e6..2980ae1 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -3023,13 +3023,13 @@
 			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 c44d469..d8c584c 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -854,10 +854,15 @@
 		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);