MINOR: stream: Don't trigger errors on destructive HTTP upgrades

When a TCP stream is upgraded to H2 stream, a destructive upgrade is
performed. It means the TCP stream is silently released while a new one is
created. It is of course more complicated but it is what we observe from the
stream point of view.

That was performed by returning an error when the backend was set. It is
neither really elegant nor accurate. So now, instead of returning an error
from stream_set_backend() in case of destructive HTTP upgrades, the TCP
stream processing is aborted and no error is reported. However, the result
is more or less the same.
diff --git a/src/proxy.c b/src/proxy.c
index 335bbaf..c9a0384 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -2176,23 +2176,27 @@
 					    &s->si[0].wait_event);
 				if (conn_upgrade_mux_fe(conn, cs, &s->req.buf, ist(""), PROTO_MODE_HTTP)  == -1)
 					return 0;
+
+				s->req.flags &= ~(CF_READ_PARTIAL|CF_AUTO_CONNECT);
+				s->req.total = 0;
+				s->flags |= SF_IGNORE;
 				if (strcmp(conn->mux->name, "H2") == 0) {
 					/* For HTTP/2, destroy the conn_stream,
-					 * disable logging, and pretend that we
-					 * failed, to that the stream is
-					 * silently destroyed. The new mux
-					 * will create new streams.
+					 * disable logging, and abort the stream
+					 * process. Thus it will be silently
+					 * destroyed. The new mux will create
+					 * new streams.
 					 */
 					cs_free(cs);
 					si_detach_endpoint(&s->si[0]);
 					s->logs.logwait = 0;
 					s->logs.level = 0;
-					s->flags |= SF_IGNORE;
-					return 0;
+					channel_abort(&s->req);
+					channel_abort(&s->res);
+					s->req.analysers &= AN_REQ_FLT_END;
+					s->req.analyse_exp = TICK_ETERNITY;
+					return 1;
 				}
-				s->req.flags &= ~(CF_READ_PARTIAL|CF_AUTO_CONNECT);
-				s->req.total = 0;
-				s->flags |= SF_IGNORE;
 			}
 		}
 		else if (IS_HTX_STRM(s) && be->mode != PR_MODE_HTTP) {