OPTIM: backend/random: never queue on the server, always on the backend

If random() returns a server whose maxconn is reached or the queue is
used, instead of adding the request to the server's queue, better add
it to the backend queue so that it can be served by any server (hence
the fastest one).
diff --git a/src/backend.c b/src/backend.c
index 44cda1a..35e6f78 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -548,6 +548,13 @@
 			curr = prev;
 	} while (--draws > 0);
 
+	/* if the selected server is full, pretend we have none so that we reach
+	 * the backend's queue instead.
+	 */
+	if (curr &&
+	    (curr->nbpend || (curr->maxconn && curr->served >= srv_dynamic_maxconn(curr))))
+		curr = NULL;
+
 	return curr;
 }