From 35de8ec2dbdb8d772593289093e4244c88aef94c Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 16 Sep 2011 12:21:02 +0300 Subject: [PATCH] lib-sql: Fixed load balancing between multiple SQL hosts to actually work. --- src/lib-sql/driver-sqlpool.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib-sql/driver-sqlpool.c b/src/lib-sql/driver-sqlpool.c index 75de50c9c2..7eadcb4145 100644 --- a/src/lib-sql/driver-sqlpool.c +++ b/src/lib-sql/driver-sqlpool.c @@ -303,7 +303,7 @@ sqlpool_find_available_connection(struct sqlpool_db *db, conns = array_get(&db->all_connections, &count); for (i = 0; i < count; i++) { - unsigned int idx = (i + db->last_query_conn_idx) % count; + unsigned int idx = (i + db->last_query_conn_idx + 1) % count; struct sql_db *conndb = conns[idx].db; if (conns[idx].host_idx == unwanted_host_idx) @@ -526,8 +526,8 @@ static int driver_sqlpool_connect(struct sql_db *_db) ret2 = conn->db->to_reconnect != NULL ? -1 : sql_connect(conn->db); if (ret2 > 0) - return 1; - if (ret2 == 0) + ret = 1; + else if (ret2 == 0 && ret < 0) ret = 0; } return ret; -- 2.47.3