MINOR: stream: provide a few helpers to retrieve frontend, listener and origin

Expressions are quite long when using strm_sess(strm)->whatever, so let's
provide a few helpers : strm_fe(), strm_li(), strm_orig().
diff --git a/include/proto/stream.h b/include/proto/stream.h
index 1cd506a..eade028 100644
--- a/include/proto/stream.h
+++ b/include/proto/stream.h
@@ -68,6 +68,24 @@
 	return strm->sess;
 }
 
+/* returns the frontend this stream was initiated from */
+static inline struct proxy *strm_fe(const struct stream *strm)
+{
+	return strm->sess->fe;
+}
+
+/* returns the listener this stream was initiated from */
+static inline struct listener *strm_li(const struct stream *strm)
+{
+	return strm->sess->listener;
+}
+
+/* returns a pointer to the origin of the session which created this stream */
+static inline enum obj_type *strm_orig(const struct stream *strm)
+{
+	return strm->sess->origin;
+}
+
 /* sets the stick counter's entry pointer */
 static inline void stkctr_set_entry(struct stkctr *stkctr, struct stksess *entry)
 {
diff --git a/src/backend.c b/src/backend.c
index 0d18dd7..75792bd 100644
--- a/src/backend.c
+++ b/src/backend.c
@@ -607,7 +607,7 @@
 
 			switch (s->be->lbprm.algo & BE_LB_PARM) {
 			case BE_LB_HASH_SRC:
-				conn = objt_conn(strm_sess(s)->origin);
+				conn = objt_conn(strm_orig(s));
 				if (conn && conn->addr.from.ss_family == AF_INET) {
 					srv = get_server_sh(s->be,
 							    (void *)&((struct sockaddr_in *)&conn->addr.from)->sin_addr,
@@ -746,7 +746,7 @@
  */
 int assign_server_address(struct stream *s)
 {
-	struct connection *cli_conn = objt_conn(strm_sess(s)->origin);
+	struct connection *cli_conn = objt_conn(strm_orig(s));
 	struct connection *srv_conn = objt_conn(s->si[1].end);
 
 #ifdef DEBUG_FULL
@@ -966,7 +966,7 @@
 	case CO_SRC_TPROXY_CLI:
 	case CO_SRC_TPROXY_CIP:
 		/* FIXME: what can we do if the client connects in IPv6 or unix socket ? */
-		cli_conn = objt_conn(strm_sess(s)->origin);
+		cli_conn = objt_conn(strm_orig(s));
 		if (cli_conn)
 			srv_conn->addr.from = cli_conn->addr.from;
 		else
@@ -1074,7 +1074,7 @@
 		srv_conn->send_proxy_ofs = 0;
 		if (objt_server(s->target) && objt_server(s->target)->pp_opts) {
 			srv_conn->send_proxy_ofs = 1; /* must compute size */
-			cli_conn = objt_conn(strm_sess(s)->origin);
+			cli_conn = objt_conn(strm_orig(s));
 			if (cli_conn)
 				conn_get_to_addr(cli_conn);
 		}
@@ -1090,7 +1090,7 @@
 	}
 
 	/* flag for logging source ip/port */
-	if (strm_sess(s)->fe->options2 & PR_O2_SRC_ADDR)
+	if (strm_fe(s)->options2 & PR_O2_SRC_ADDR)
 		s->si[1].flags |= SI_FL_SRC_ADDR;
 
 	/* disable lingering */
diff --git a/src/compression.c b/src/compression.c
index 814c24f..dc5ad5a 100644
--- a/src/compression.c
+++ b/src/compression.c
@@ -319,10 +319,10 @@
 	/* update input rate */
 	if (s->comp_ctx && s->comp_ctx->cur_lvl > 0) {
 		update_freq_ctr(&global.comp_bps_in, msg->next);
-		strm_sess(s)->fe->fe_counters.comp_in += msg->next;
+		strm_fe(s)->fe_counters.comp_in += msg->next;
 		s->be->be_counters.comp_in += msg->next;
 	} else {
-		strm_sess(s)->fe->fe_counters.comp_byp += msg->next;
+		strm_fe(s)->fe_counters.comp_byp += msg->next;
 		s->be->be_counters.comp_byp += msg->next;
 	}
 
@@ -346,7 +346,7 @@
 
 	if (s->comp_ctx && s->comp_ctx->cur_lvl > 0) {
 		update_freq_ctr(&global.comp_bps_out, to_forward);
-		strm_sess(s)->fe->fe_counters.comp_out += to_forward;
+		strm_fe(s)->fe_counters.comp_out += to_forward;
 		s->be->be_counters.comp_out += to_forward;
 	}
 
diff --git a/src/dumpstats.c b/src/dumpstats.c
index c24f815..de86339 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -551,7 +551,7 @@
 
 	/* any other information should be dumped here */
 
-	if (target && strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER)
+	if (target && strm_li(s)->bind_conf->level < ACCESS_LVL_OPER)
 		chunk_appendf(msg, "# contents not dumped due to insufficient privileges\n");
 
 	if (bi_putchk(si_ic(si), msg) == -1) {
@@ -705,7 +705,7 @@
 	}
 
 	/* check permissions */
-	if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
+	if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
 		appctx->ctx.cli.msg = stats_permission_denied_msg;
 		appctx->st0 = STAT_CLI_PRINT;
 		return;
@@ -905,7 +905,7 @@
 	struct appctx *appctx = __objt_appctx(si->end);
 	struct proxy *px;
 
-	if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+	if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 		appctx->ctx.cli.msg = stats_permission_denied_msg;
 		appctx->st0 = STAT_CLI_PRINT;
 		return NULL;
@@ -938,7 +938,7 @@
 	struct server *sv;
 	char *line;
 
-	if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+	if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 		appctx->ctx.cli.msg = stats_permission_denied_msg;
 		appctx->st0 = STAT_CLI_PRINT;
 		return NULL;
@@ -1111,7 +1111,7 @@
 		}
 		else if (strcmp(args[1], "sess") == 0) {
 			appctx->st2 = STAT_ST_INIT;
-			if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
+			if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
 				appctx->ctx.cli.msg = stats_permission_denied_msg;
 				appctx->st0 = STAT_CLI_PRINT;
 				return 1;
@@ -1127,7 +1127,7 @@
 			appctx->st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
 		}
 		else if (strcmp(args[1], "errors") == 0) {
-			if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER) {
+			if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER) {
 				appctx->ctx.cli.msg = stats_permission_denied_msg;
 				appctx->st0 = STAT_CLI_PRINT;
 				return 1;
@@ -1188,8 +1188,8 @@
 				clrall = 1;
 
 			/* check permissions */
-			if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_OPER ||
-			    (clrall && strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN)) {
+			if (strm_li(s)->bind_conf->level < ACCESS_LVL_OPER ||
+			    (clrall && strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN)) {
 				appctx->ctx.cli.msg = stats_permission_denied_msg;
 				appctx->st0 = STAT_CLI_PRINT;
 				return 1;
@@ -1511,15 +1511,15 @@
 						resume_listener(l);
 				}
 
-				if (px->maxconn > px->feconn && !LIST_ISEMPTY(&strm_sess(s)->fe->listener_queue))
-					dequeue_all_listeners(&strm_sess(s)->fe->listener_queue);
+				if (px->maxconn > px->feconn && !LIST_ISEMPTY(&strm_fe(s)->listener_queue))
+					dequeue_all_listeners(&strm_fe(s)->listener_queue);
 
 				return 1;
 			}
 			else if (strcmp(args[2], "global") == 0) {
 				int v;
 
-				if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+				if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 					appctx->ctx.cli.msg = stats_permission_denied_msg;
 					appctx->st0 = STAT_CLI_PRINT;
 					return 1;
@@ -1561,7 +1561,7 @@
 				if (strcmp(args[3], "global") == 0) {
 					int v;
 
-					if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+					if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 						appctx->ctx.cli.msg = stats_permission_denied_msg;
 						appctx->st0 = STAT_CLI_PRINT;
 						return 1;
@@ -1598,7 +1598,7 @@
 				if (strcmp(args[3], "global") == 0) {
 					int v;
 
-					if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+					if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 						appctx->ctx.cli.msg = stats_permission_denied_msg;
 						appctx->st0 = STAT_CLI_PRINT;
 						return 1;
@@ -1636,7 +1636,7 @@
 				if (strcmp(args[3], "global") == 0) {
 					int v;
 
-					if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+					if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 						appctx->ctx.cli.msg = stats_permission_denied_msg;
 						appctx->st0 = STAT_CLI_PRINT;
 						return 1;
@@ -1981,7 +1981,7 @@
 		else if (strcmp(args[1], "session") == 0) {
 			struct stream *sess, *ptr;
 
-			if (strm_sess(s)->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
+			if (strm_li(s)->bind_conf->level < ACCESS_LVL_ADMIN) {
 				appctx->ctx.cli.msg = stats_permission_denied_msg;
 				appctx->st0 = STAT_CLI_PRINT;
 				return 1;
@@ -5020,9 +5020,9 @@
 			     tm.tm_mday, monthname[tm.tm_mon], tm.tm_year+1900,
 			     tm.tm_hour, tm.tm_min, tm.tm_sec, (int)(sess->logs.accept_date.tv_usec),
 			     sess->uniq_id,
-			     strm_sess(sess)->listener && strm_sess(sess)->listener->proto->name ? strm_sess(sess)->listener->proto->name : "?");
+			     strm_li(sess) && strm_li(sess)->proto->name ? strm_li(sess)->proto->name : "?");
 
-		conn = objt_conn(strm_sess(sess)->origin);
+		conn = objt_conn(strm_orig(sess));
 		switch (conn ? addr_to_str(&conn->addr.from, pn, sizeof(pn)) : AF_UNSPEC) {
 		case AF_INET:
 		case AF_INET6:
@@ -5030,7 +5030,7 @@
 			              pn, get_host_port(&conn->addr.from));
 			break;
 		case AF_UNIX:
-			chunk_appendf(&trash, " source=unix:%d\n", strm_sess(sess)->listener->luid);
+			chunk_appendf(&trash, " source=unix:%d\n", strm_li(sess)->luid);
 			break;
 		default:
 			/* no more information to print right now */
@@ -5044,9 +5044,9 @@
 
 		chunk_appendf(&trash,
 			     "  frontend=%s (id=%u mode=%s), listener=%s (id=%u)",
-			     strm_sess(sess)->fe->id, strm_sess(sess)->fe->uuid, strm_sess(sess)->fe->mode ? "http" : "tcp",
-			     strm_sess(sess)->listener ? strm_sess(sess)->listener->name ? strm_sess(sess)->listener->name : "?" : "?",
-			     strm_sess(sess)->listener ? strm_sess(sess)->listener->luid : 0);
+			     strm_fe(sess)->id, strm_fe(sess)->uuid, strm_fe(sess)->mode ? "http" : "tcp",
+			     strm_li(sess) ? strm_li(sess)->name ? strm_li(sess)->name : "?" : "?",
+			     strm_li(sess) ? strm_li(sess)->luid : 0);
 
 		if (conn)
 			conn_get_to_addr(conn);
@@ -5058,7 +5058,7 @@
 				     pn, get_host_port(&conn->addr.to));
 			break;
 		case AF_UNIX:
-			chunk_appendf(&trash, " addr=unix:%d\n", strm_sess(sess)->listener->luid);
+			chunk_appendf(&trash, " addr=unix:%d\n", strm_li(sess)->luid);
 			break;
 		default:
 			/* no more information to print right now */
@@ -5602,10 +5602,10 @@
 			chunk_appendf(&trash,
 				     "%p: proto=%s",
 				     curr_sess,
-				     strm_sess(curr_sess)->listener->proto->name);
+				     strm_li(curr_sess)->proto->name);
 
 
-			conn = objt_conn(strm_sess(curr_sess)->origin);
+			conn = objt_conn(strm_orig(curr_sess));
 			switch (conn ? addr_to_str(&conn->addr.from, pn, sizeof(pn)) : AF_UNSPEC) {
 			case AF_INET:
 			case AF_INET6:
@@ -5613,7 +5613,7 @@
 					     " src=%s:%d fe=%s be=%s srv=%s",
 					     pn,
 					     get_host_port(&conn->addr.from),
-					     strm_sess(curr_sess)->fe->id,
+					     strm_fe(curr_sess)->id,
 					     (curr_sess->be->cap & PR_CAP_BE) ? curr_sess->be->id : "<NONE>",
 					     objt_server(curr_sess->target) ? objt_server(curr_sess->target)->id : "<none>"
 					     );
@@ -5621,8 +5621,8 @@
 			case AF_UNIX:
 				chunk_appendf(&trash,
 					     " src=unix:%d fe=%s be=%s srv=%s",
-					     strm_sess(curr_sess)->listener->luid,
-					     strm_sess(curr_sess)->fe->id,
+					     strm_li(curr_sess)->luid,
+					     strm_fe(curr_sess)->id,
 					     (curr_sess->be->cap & PR_CAP_BE) ? curr_sess->be->id : "<NONE>",
 					     objt_server(curr_sess->target) ? objt_server(curr_sess->target)->id : "<none>"
 					     );
@@ -5828,7 +5828,7 @@
 					return 0;
 
 				if (appctx->ctx.table.target &&
-				    strm_sess(s)->listener->bind_conf->level >= ACCESS_LVL_OPER) {
+				    strm_li(s)->bind_conf->level >= ACCESS_LVL_OPER) {
 					/* dump entries only if table explicitly requested */
 					eb = ebmb_first(&appctx->ctx.table.proxy->table.keys);
 					if (eb) {
diff --git a/src/peers.c b/src/peers.c
index b5d1d8e..882633b 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -215,7 +215,7 @@
 static void peer_io_handler(struct stream_interface *si)
 {
 	struct stream *s = si_strm(si);
-	struct peers *curpeers = (struct peers *)strm_sess(s)->fe->parent;
+	struct peers *curpeers = (struct peers *)strm_fe(s)->parent;
 	struct appctx *appctx = objt_appctx(si->end);
 	int reql = 0;
 	int repl = 0;
diff --git a/src/proto_http.c b/src/proto_http.c
index 1cb3063..338ae9e 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -851,8 +851,8 @@
 {
 	if (s->be->errmsg[msgnum].str)
 		return &s->be->errmsg[msgnum];
-	else if (strm_sess(s)->fe->errmsg[msgnum].str)
-		return &strm_sess(s)->fe->errmsg[msgnum];
+	else if (strm_fe(s)->errmsg[msgnum].str)
+		return &strm_fe(s)->errmsg[msgnum];
 	else
 		return &http_err_chunks[msgnum];
 }
@@ -2264,7 +2264,7 @@
 	}
 
 	/* search for the algo in the backend in priority or the frontend */
-	if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_sess(s)->fe->comp && (comp_algo_back = strm_sess(s)->fe->comp->algos))) {
+	if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_fe(s)->comp && (comp_algo_back = strm_fe(s)->comp->algos))) {
 		int best_q = 0;
 
 		ctx.idx = 0;
@@ -2322,7 +2322,7 @@
 
 	/* remove all occurrences of the header when "compression offload" is set */
 	if (s->comp_algo) {
-		if ((s->be->comp && s->be->comp->offload) || (strm_sess(s)->fe->comp && strm_sess(s)->fe->comp->offload)) {
+		if ((s->be->comp && s->be->comp->offload) || (strm_fe(s)->comp && strm_fe(s)->comp->offload)) {
 			http_remove_header2(msg, &txn->hdr_idx, &ctx);
 			ctx.idx = 0;
 			while (http_find_header2("Accept-Encoding", 15, req->p, &txn->hdr_idx, &ctx)) {
@@ -2333,7 +2333,7 @@
 	}
 
 	/* identity is implicit does not require headers */
-	if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_sess(s)->fe->comp && (comp_algo_back = strm_sess(s)->fe->comp->algos))) {
+	if ((s->be->comp && (comp_algo_back = s->be->comp->algos)) || (strm_fe(s)->comp && (comp_algo_back = strm_fe(s)->comp->algos))) {
 		for (comp_algo = comp_algo_back; comp_algo; comp_algo = comp_algo->next) {
 			if (comp_algo->cfg_name_len == 8 && memcmp(comp_algo->cfg_name, "identity", 8) == 0) {
 				s->comp_algo = comp_algo;
@@ -2400,7 +2400,7 @@
 			goto fail;
 
 		if ((s->be->comp && (comp_type = s->be->comp->types)) ||
-		    (strm_sess(s)->fe->comp && (comp_type = strm_sess(s)->fe->comp->types))) {
+		    (strm_fe(s)->comp && (comp_type = strm_fe(s)->comp->types))) {
 			for (; comp_type; comp_type = comp_type->next) {
 				if (ctx.vlen >= comp_type->name_len &&
 				    strncasecmp(ctx.line+ctx.val, comp_type->name, comp_type->name_len) == 0)
@@ -2413,7 +2413,7 @@
 		}
 	}
 	else { /* no content-type header */
-		if ((s->be->comp && s->be->comp->types) || (strm_sess(s)->fe->comp && strm_sess(s)->fe->comp->types))
+		if ((s->be->comp && s->be->comp->types) || (strm_fe(s)->comp && strm_fe(s)->comp->types))
 			goto fail; /* a content-type was required */
 	}
 
@@ -2464,7 +2464,7 @@
 
 void http_adjust_conn_mode(struct stream *s, struct http_txn *txn, struct http_msg *msg)
 {
-	struct proxy *fe = strm_sess(s)->fe;
+	struct proxy *fe = strm_fe(s);
 	int tmp = TX_CON_WANT_KAL;
 
 	if (!((fe->options2|s->be->options2) & PR_O2_FAKE_KA)) {
@@ -4907,7 +4907,7 @@
 void http_end_txn_clean_session(struct stream *s)
 {
 	int prev_status = s->txn->status;
-	struct proxy *fe = strm_sess(s)->fe;
+	struct proxy *fe = strm_fe(s);
 
 	/* FIXME: We need a more portable way of releasing a backend's and a
 	 * server's connections. We need a safer way to reinitialize buffer
@@ -5062,7 +5062,7 @@
 	/* we're in keep-alive with an idle connection, monitor it */
 	si_idle_conn(&s->si[1]);
 
-	s->req.analysers = strm_sess(s)->listener->analysers;
+	s->req.analysers = strm_li(s)->analysers;
 	s->res.analysers = 0;
 }
 
@@ -6988,7 +6988,7 @@
 				 * FIXME: should we return an HTTP/500 here so that
 				 * the admin knows there's a problem ?
 				 */
-				if (s->be != strm_sess(s)->fe)
+				if (s->be != strm_fe(s))
 					break;
 
 				/* Swithing Proxy */
@@ -7089,7 +7089,7 @@
 			 * FIXME: should we return an HTTP/500 here so that
 			 * the admin knows there's a problem ?
 			 */
-			if (s->be != strm_sess(s)->fe)
+			if (s->be != strm_fe(s))
 				break;
 
 			/* Swithing Proxy */
@@ -8830,7 +8830,7 @@
 void http_init_txn(struct stream *s)
 {
 	struct http_txn *txn = s->txn;
-	struct proxy *fe = strm_sess(s)->fe;
+	struct proxy *fe = strm_fe(s);
 
 	txn->flags = 0;
 	txn->status = -1;
@@ -8872,7 +8872,7 @@
 void http_end_txn(struct stream *s)
 {
 	struct http_txn *txn = s->txn;
-	struct proxy *fe = strm_sess(s)->fe;
+	struct proxy *fe = strm_fe(s);
 
 	/* release any possible compression context */
 	if (s->flags & SF_COMP_READY)
@@ -8920,8 +8920,8 @@
 	 */
 	s->current_rule_list = NULL;
 
-	s->be = strm_sess(s)->fe;
-	s->logs.logwait = strm_sess(s)->fe->to_log;
+	s->be = strm_fe(s);
+	s->logs.logwait = strm_fe(s)->to_log;
 	s->logs.level = 0;
 	stream_del_srv_conn(s);
 	s->target = NULL;
@@ -8944,11 +8944,11 @@
 	if (unlikely(s->res.buf->i))
 		s->res.buf->i = 0;
 
-	s->req.rto = strm_sess(s)->fe->timeout.client;
+	s->req.rto = strm_fe(s)->timeout.client;
 	s->req.wto = TICK_ETERNITY;
 
 	s->res.rto = TICK_ETERNITY;
-	s->res.wto = strm_sess(s)->fe->timeout.client;
+	s->res.wto = strm_fe(s)->timeout.client;
 
 	s->req.rex = TICK_ETERNITY;
 	s->req.wex = TICK_ETERNITY;
@@ -10887,7 +10887,7 @@
 smp_fetch_capture_header_req(struct proxy *px, struct session *sess, struct stream *strm, unsigned int opt,
                              const struct arg *args, struct sample *smp, const char *kw, void *private)
 {
-	struct proxy *fe = strm_sess(strm)->fe;
+	struct proxy *fe = strm_fe(strm);
 	int idx;
 
 	if (!args || args->type != ARGT_UINT)
@@ -10913,7 +10913,7 @@
 smp_fetch_capture_header_res(struct proxy *px, struct session *sess, struct stream *strm, unsigned int opt,
                              const struct arg *args, struct sample *smp, const char *kw, void *private)
 {
-	struct proxy *fe = strm_sess(strm)->fe;
+	struct proxy *fe = strm_fe(strm);
 	int idx;
 
 	if (!args || args->type != ARGT_UINT)
diff --git a/src/proxy.c b/src/proxy.c
index f55aaa4..12e8aa3 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -959,8 +959,8 @@
 		 * have to re-adjust the desired keep-alive/close mode to accommodate
 		 * both the frontend's and the backend's modes.
 		 */
-		if (strm_sess(s)->fe->mode == PR_MODE_HTTP && be->mode == PR_MODE_HTTP &&
-		    ((strm_sess(s)->fe->options & PR_O_HTTP_MODE) != (be->options & PR_O_HTTP_MODE)))
+		if (strm_fe(s)->mode == PR_MODE_HTTP && be->mode == PR_MODE_HTTP &&
+		    ((strm_fe(s)->options & PR_O_HTTP_MODE) != (be->options & PR_O_HTTP_MODE)))
 			http_adjust_conn_mode(s, s->txn, &s->txn->req);
 
 		/* If an LB algorithm needs to access some pre-parsed body contents,
@@ -984,7 +984,7 @@
 	 * be more reliable to store the list of analysers that have been run,
 	 * but what we do here is OK for now.
 	 */
-	s->req.analysers |= be->be_req_ana & ~strm_sess(s)->listener->analysers;
+	s->req.analysers |= be->be_req_ana & ~strm_li(s)->analysers;
 
 	return 1;
 }
diff --git a/src/stream.c b/src/stream.c
index 91c2a0d..ba6f499 100644
--- a/src/stream.c
+++ b/src/stream.c
@@ -1062,7 +1062,7 @@
 	if (s->be->mode == PR_MODE_TCP) { /* let's allow immediate data connection in this case */
 		/* if the user wants to log as soon as possible, without counting
 		 * bytes from the server, then this is the right moment. */
-		if (!LIST_ISEMPTY(&strm_sess(s)->fe->logformat) && !(s->logs.logwait & LW_BYTES)) {
+		if (!LIST_ISEMPTY(&strm_fe(s)->logformat) && !(s->logs.logwait & LW_BYTES)) {
 			s->logs.t_close = s->logs.t_connect; /* to get a valid end date */
 			s->do_log(s);
 		}
@@ -1071,7 +1071,7 @@
 		rep->flags |= CF_READ_DONTWAIT; /* a single read is enough to get response headers */
 	}
 
-	rep->analysers |= strm_sess(s)->fe->fe_rsp_ana | s->be->be_rsp_ana;
+	rep->analysers |= strm_fe(s)->fe_rsp_ana | s->be->be_rsp_ana;
 	rep->flags |= CF_READ_ATTACHED; /* producer is now attached */
 	if (req->flags & CF_WAKE_CONNECT) {
 		req->flags |= CF_WAKE_ONCE;
@@ -1264,9 +1264,9 @@
 	if (!(s->flags & SF_FINST_MASK)) {
 		if (s->si[1].state < SI_ST_REQ) {
 
-			strm_sess(s)->fe->fe_counters.failed_req++;
-			if (strm_sess(s)->listener->counters)
-				strm_sess(s)->listener->counters->failed_req++;
+			strm_fe(s)->fe_counters.failed_req++;
+			if (strm_li(s)->counters)
+				strm_li(s)->counters->failed_req++;
 
 			s->flags |= SF_FINST_R;
 		}