diff --git a/src/shrpx_http2_session.cc b/src/shrpx_http2_session.cc index a4ab465f..84552fce 100644 --- a/src/shrpx_http2_session.cc +++ b/src/shrpx_http2_session.cc @@ -577,11 +577,11 @@ int Http2Session::initiate_connection() { } } - on_write_ = &Http2Session::downstream_write; - on_read_ = &Http2Session::downstream_read; - // We have been already connected when no TLS and proxy is used. if (state_ == PROXY_CONNECTED) { + on_read_ = &Http2Session::read_noop; + on_write_ = &Http2Session::write_noop; + return connected(); } @@ -1642,6 +1642,9 @@ int Http2Session::connection_made() { state_ = Http2Session::CONNECTED; + on_write_ = &Http2Session::downstream_write; + on_read_ = &Http2Session::downstream_read; + if (addr_->tls) { const unsigned char *next_proto = nullptr; unsigned int next_proto_len = 0;