MEDIUM: connections: Attempt to get idle connections from other threads.

In connect_server(), if we no longer have any idle connections for the
current thread, attempt to use the new "takeover" mux method to steal a
connection from another thread.
This should have no impact right now, given no mux implements it.
diff --git a/include/proto/server.h b/include/proto/server.h
index 7ba9c83..6eb4515 100644
--- a/include/proto/server.h
+++ b/include/proto/server.h
@@ -262,11 +262,16 @@
 			return 0;
 		}
 		MT_LIST_DEL(&conn->list);
-		conn->flags = (conn->flags &~ CO_FL_LIST_MASK) |
-		              (is_safe ? CO_FL_SAFE_LIST : CO_FL_IDLE_LIST);
-		MT_LIST_ADDQ(is_safe ? &srv->safe_conns[tid] : &srv->idle_conns[tid],
-		             (struct mt_list *)&conn->list);
-		srv->curr_idle_thr[tid]++;
+		if (is_safe) {
+			conn->flags = (conn->flags & ~CO_FL_LIST_MASK) | CO_FL_SAFE_LIST;
+			MT_LIST_ADDQ(&srv->safe_conns[tid], (struct mt_list *)&conn->list);
+			_HA_ATOMIC_ADD(&srv->curr_safe_nb, 1);
+		} else {
+			conn->flags = (conn->flags & ~CO_FL_LIST_MASK) | CO_FL_IDLE_LIST;
+			MT_LIST_ADDQ(&srv->idle_conns[tid], (struct mt_list *)&conn->list);
+			_HA_ATOMIC_ADD(&srv->curr_idle_nb, 1);
+		}
+		_HA_ATOMIC_ADD(&srv->curr_idle_thr[tid], 1);
 
 		conn->idle_time = now_ms;
 		__ha_barrier_full();