From 3159cea922902ecf28211c59fd0b1622e421f805 Mon Sep 17 00:00:00 2001 From: scw00 <616955249@qq.com> Date: Tue, 13 Jun 2017 12:53:37 +0800 Subject: [PATCH] ua_buffer_reader should be released in deallocate_redirect_postdata_buffers --- proxy/http/HttpTunnel.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/proxy/http/HttpTunnel.cc b/proxy/http/HttpTunnel.cc index fa66b2b6bef..fd702f7e18c 100644 --- a/proxy/http/HttpTunnel.cc +++ b/proxy/http/HttpTunnel.cc @@ -589,8 +589,8 @@ HttpTunnel::kill_tunnel() ink_assert(producer.alive == false); } active = false; - this->deallocate_buffers(); this->deallocate_redirect_postdata_buffers(); + this->deallocate_buffers(); this->reset(); } @@ -630,6 +630,9 @@ HttpTunnel::deallocate_buffers() for (auto &producer : producers) { if (producer.read_buffer != nullptr) { ink_assert(producer.vc != nullptr); + if (postbuf && postbuf->ua_buffer_reader && postbuf->ua_buffer_reader->mbuf == producer.read_buffer) { + postbuf->ua_buffer_reader = nullptr; + } free_MIOBuffer(producer.read_buffer); producer.read_buffer = nullptr; producer.buffer_start = nullptr; @@ -1761,6 +1764,12 @@ HttpTunnel::deallocate_redirect_postdata_buffers() postbuf->postdata_copy_buffer = nullptr; postbuf->postdata_copy_buffer_start = nullptr; // deallocated by the buffer } + + if (postbuf->ua_buffer_reader != nullptr) { + postbuf->ua_buffer_reader->mbuf->dealloc_reader(postbuf->ua_buffer_reader); + postbuf->ua_buffer_reader = nullptr; + } + delete postbuf; postbuf = nullptr; }