MINOR: stream-int: make si_idle_conn() only accept valid connections

This function is now dedicated to idle connections only, which means
that it must not be used without any endpoint nor anything not a
connection. The connection remains attached to the stream interface.
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 09c2a4e..8c7a950 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -167,17 +167,15 @@
 	si_detach_endpoint(si);
 }
 
-/* Turn a possibly existing connection endpoint of stream interface <si> to
- * idle mode, which means that the connection will be polled for incoming events
- * and might be killed by the underlying I/O handler. If <pool> is not null, the
- * connection will also be added at the head of this list.
+/* Turn an existing connection endpoint of stream interface <si> to idle mode,
+ * which means that the connection will be polled for incoming events and might
+ * be killed by the underlying I/O handler. If <pool> is not null, the
+ * connection will also be added at the head of this list. This connection
+ * remains assigned to the stream interface it is currently attached to.
  */
 static inline void si_idle_conn(struct stream_interface *si, struct list *pool)
 {
-	struct connection *conn = objt_conn(si->end);
-
-	if (!conn)
-		return;
+	struct connection *conn = __objt_conn(si->end);
 
 	if (pool)
 		LIST_ADD(pool, &conn->list);
diff --git a/src/proto_http.c b/src/proto_http.c
index 352dd75..d1acf30 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -5186,11 +5186,10 @@
 	channel_auto_close(&s->res);
 
 	/* we're in keep-alive with an idle connection, monitor it */
-	srv = NULL;
-	if (srv_conn)
+	if (srv_conn) {
 		srv = objt_server(srv_conn->target);
-
-	si_idle_conn(&s->si[1], srv ? &srv->priv_conns : NULL);
+		si_idle_conn(&s->si[1], srv ? &srv->priv_conns : NULL);
+	}
 
 	s->req.analysers = strm_li(s)->analysers;
 	s->res.analysers = 0;