While fixing the backup server round-robin "feature", a new bug was introduced
which could miss some backup servers.
diff --git a/haproxy.c b/haproxy.c
index 67dce3d..d03ec1f 100644
--- a/haproxy.c
+++ b/haproxy.c
@@ -1787,17 +1787,21 @@
  */
 static inline struct server *find_server(struct proxy *px) {
     struct server *srv = px->cursrv;
+    struct server *end;
     int ignore_backup = 1;
 
     do {
+	if (srv == NULL)
+	    srv = px->srv;
+        end = srv;
 	do  {
-	    if (srv == NULL)
-		srv = px->srv;
 	    if (srv->state & SRV_RUNNING
 		&& !((srv->state & SRV_BACKUP) && ignore_backup))
 		return srv;
 	    srv = srv->next;
-	} while (srv != px->cursrv);
+	    if (srv == NULL)
+		srv = px->srv;
+	} while (srv != end);
 
 	/* By default, we look for the first backup server if all others are
 	 * DOWN. But in some cases, it may be desirable to load-balance across