[MAJOR] session: remove the ->srv pointer from struct session

This one has been removed and is now totally superseded by ->target.
To get the server, one must use target_srv(&s->target) instead of
s->srv now.

The function ensures that non-server targets still return NULL.
diff --git a/src/queue.c b/src/queue.c
index 4994181..ae99284 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -113,10 +113,8 @@
 			return NULL;
 	} else {
 		/* pendconn exists in the proxy queue */
-		if (!ps || tv_islt(&pp->sess->logs.tv_request, &ps->sess->logs.tv_request)) {
+		if (!ps || tv_islt(&pp->sess->logs.tv_request, &ps->sess->logs.tv_request))
 			ps = pp;
-			ps->sess->srv = srv;
-		}
 	}
 	sess = ps->sess;
 	pendconn_free(ps);
@@ -124,7 +122,6 @@
 	/* we want to note that the session has now been assigned a server */
 	sess->flags |= SN_ASSIGNED;
 	set_target_server(&sess->target, srv);
-	sess->srv = srv;
 	sess->srv_conn = srv;
 	srv->served++;
 	if (px->lbprm.server_take_conn)
@@ -142,6 +139,7 @@
 struct pendconn *pendconn_add(struct session *sess)
 {
 	struct pendconn *p;
+	struct server *srv;
 
 	p = pool_alloc2(pool2_pendconn);
 	if (!p)
@@ -149,14 +147,14 @@
 
 	sess->pend_pos = p;
 	p->sess = sess;
-	p->srv  = sess->srv;
+	p->srv = srv = target_srv(&sess->target);
 
-	if (sess->flags & SN_ASSIGNED && sess->srv) {
-		LIST_ADDQ(&sess->srv->pendconns, &p->list);
-		sess->srv->nbpend++;
-		sess->logs.srv_queue_size += sess->srv->nbpend;
-		if (sess->srv->nbpend > sess->srv->counters.nbpend_max)
-			sess->srv->counters.nbpend_max = sess->srv->nbpend;
+	if (sess->flags & SN_ASSIGNED && srv) {
+		LIST_ADDQ(&srv->pendconns, &p->list);
+		srv->nbpend++;
+		sess->logs.srv_queue_size += srv->nbpend;
+		if (srv->nbpend > srv->counters.nbpend_max)
+			srv->counters.nbpend_max = srv->nbpend;
 	} else {
 		LIST_ADDQ(&sess->be->pendconns, &p->list);
 		sess->be->nbpend++;