BUG/MEDIUM: proxy: Don't use cs_destroy() when freeing the conn_stream.

When we upgrade the mux from TCP to H2/HTX, don't use cs_destroy() to free
the conn_stream, use cs_free() instead. Using cs_destroy() would call the
mux detach method, and at that point of time the mux would be the H2 mux,
which knows nothing about that conn_stream, so bad things would happen.
This should eventually make upgrade from TCP to H2/HTX work, and fix
the github issue #196.

This should be backported to 2.0.
This commit is contained in:
Olivier Houchard 2019-08-09 18:01:15 +02:00
parent 71b20c26be
commit 59dd06d659

View File

@ -1464,7 +1464,7 @@ int stream_set_backend(struct stream *s, struct proxy *be)
* silently destroyed. The new mux
* will create new streams.
*/
cs_destroy(cs);
cs_free(cs);
si_detach_endpoint(&s->si[0]);
s->logs.logwait = 0;
s->logs.level = 0;