BUG/MAJOR: threads/lb: fix missing unlock on map-based hash LB

We often left the function with the lock held on success.
diff --git a/src/lb_map.c b/src/lb_map.c
index 028e85b..df0e185 100644
--- a/src/lb_map.c
+++ b/src/lb_map.c
@@ -224,13 +224,13 @@
 		srv = px->lbprm.map.srv[newidx++];
 		if (!srv->maxconn || (!srv->nbpend && srv->served < srv_dynamic_maxconn(srv))) {
 			/* make sure it is not the server we are try to exclude... */
+			/* ...but remember that is was selected yet avoided */
+			avoided = srv;
+			avoididx = newidx;
 			if (srv != srvtoavoid) {
 				px->lbprm.map.rr_idx = newidx;
-				return srv;
+				goto out;
 			}
-
-			avoided = srv;	/* ...but remember that is was selected yet avoided */
-			avoididx = newidx;
 		}
 		if (newidx == px->lbprm.tot_weight)
 			newidx = 0;