MEDIUM: session: use the pointer to the origin instead of s->si[0].end

When s->si[0].end was dereferenced as a connection or anything in
order to retrieve information about the originating session, we'll
now use sess->origin instead so that when we have to chain multiple
streams in HTTP/2, we'll keep accessing the same origin.
diff --git a/src/stream.c b/src/stream.c
index 357e561..70c07a7 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -592,9 +592,10 @@
 static void stream_free(struct stream *s)
 {
 	struct http_txn *txn = &s->txn;
-	struct proxy *fe = strm_sess(s)->fe;
+	struct session *sess = strm_sess(s);
+	struct proxy *fe = sess->fe;
 	struct bref *bref, *back;
-	struct connection *cli_conn = objt_conn(s->si[0].end);
+	struct connection *cli_conn = objt_conn(sess->origin);
 	int i;
 
 	if (s->pend_pos)
@@ -2910,6 +2911,7 @@
 struct stkctr *
 smp_fetch_sc_stkctr(struct stream *l4, const struct arg *args, const char *kw)
 {
+	struct session *sess = strm_sess(l4);
 	static struct stkctr stkctr;
 	struct stksess *stksess;
 	unsigned int num = kw[2] - '0';
@@ -2923,7 +2925,7 @@
 	}
 	else if (num > 9) { /* src_* variant, args[0] = table */
 		struct stktable_key *key;
-		struct connection *conn = objt_conn(l4->si[0].end);
+		struct connection *conn = objt_conn(sess->origin);
 
 		if (!conn)
 			return NULL;
@@ -3144,7 +3146,8 @@
 smp_fetch_src_updt_conn_cnt(struct proxy *px, struct stream *l4, void *l7, unsigned int opt,
                             const struct arg *args, struct sample *smp, const char *kw, void *private)
 {
-	struct connection *conn = objt_conn(l4->si[0].end);
+	struct session *sess = strm_sess(l4);
+	struct connection *conn = objt_conn(sess->origin);
 	struct stksess *ts;
 	struct stktable_key *key;
 	void *ptr;