diff --git a/src/cfgparse.c b/src/cfgparse.c
index c3159f5..0dcb0a1 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -3548,17 +3548,17 @@
 		for (newsrv = curproxy->srv; newsrv; newsrv = newsrv->next) {
 			int i;
 
-			newsrv->available_conns = calloc(global.nbthread, sizeof(*newsrv->available_conns));
+			newsrv->available_conns_tree = calloc(global.nbthread, sizeof(*newsrv->available_conns_tree));
 
-			if (!newsrv->available_conns) {
+			if (!newsrv->available_conns_tree) {
 				ha_alert("parsing [%s:%d] : failed to allocate idle connections for server '%s'.\n",
-				    newsrv->conf.file, newsrv->conf.line, newsrv->id);
+				         newsrv->conf.file, newsrv->conf.line, newsrv->id);
 				cfgerr++;
 				continue;
 			}
 
 			for (i = 0; i < global.nbthread; i++)
-				LIST_INIT(&newsrv->available_conns[i]);
+				newsrv->available_conns_tree[i] = EB_ROOT;
 
 			if (newsrv->max_idle_conns != 0) {
 				if (idle_conn_task == NULL) {
@@ -3580,27 +3580,27 @@
 					}
 				}
 
-				newsrv->idle_conns = calloc((unsigned short)global.nbthread, sizeof(*newsrv->idle_conns));
-				if (!newsrv->idle_conns) {
+				newsrv->idle_conns_tree = calloc((unsigned short)global.nbthread, sizeof(*newsrv->idle_conns_tree));
+				if (!newsrv->idle_conns_tree) {
 					ha_alert("parsing [%s:%d] : failed to allocate idle connections for server '%s'.\n",
-					    newsrv->conf.file, newsrv->conf.line, newsrv->id);
+						 newsrv->conf.file, newsrv->conf.line, newsrv->id);
 					cfgerr++;
 					continue;
 				}
 
 				for (i = 0; i < global.nbthread; i++)
-					MT_LIST_INIT(&newsrv->idle_conns[i]);
+					newsrv->idle_conns_tree[i] = EB_ROOT;
 
-				newsrv->safe_conns = calloc(global.nbthread, sizeof(*newsrv->safe_conns));
-				if (!newsrv->safe_conns) {
+				newsrv->safe_conns_tree = calloc(global.nbthread, sizeof(*newsrv->safe_conns_tree));
+				if (!newsrv->safe_conns_tree) {
 					ha_alert("parsing [%s:%d] : failed to allocate idle connections for server '%s'.\n",
-					    newsrv->conf.file, newsrv->conf.line, newsrv->id);
+						 newsrv->conf.file, newsrv->conf.line, newsrv->id);
 					cfgerr++;
 					continue;
 				}
 
 				for (i = 0; i < global.nbthread; i++)
-					MT_LIST_INIT(&newsrv->safe_conns[i]);
+					newsrv->safe_conns_tree[i] = EB_ROOT;
 
 				newsrv->curr_idle_thr = calloc(global.nbthread, sizeof(*newsrv->curr_idle_thr));
 				if (!newsrv->curr_idle_thr)
