From 682c7baecfc6090280d594ad6ef2a3aa9cee7453 Mon Sep 17 00:00:00 2001 From: Bryan Call Date: Tue, 31 Jan 2023 19:31:27 -0800 Subject: [PATCH] Fixed some memory leaks with http/3 (#9336) (cherry picked from commit a776a9f4e92de6b5b9e6b9fbea6537c962d69cbc) --- proxy/http3/Http3HeaderFramer.cc | 8 ++++++++ proxy/http3/Http3HeaderFramer.h | 1 + proxy/http3/Http3Session.cc | 1 + 3 files changed, 10 insertions(+) diff --git a/proxy/http3/Http3HeaderFramer.cc b/proxy/http3/Http3HeaderFramer.cc index 9cd17a17cd8..38d15e7c828 100644 --- a/proxy/http3/Http3HeaderFramer.cc +++ b/proxy/http3/Http3HeaderFramer.cc @@ -36,6 +36,14 @@ Http3HeaderFramer::Http3HeaderFramer(Http3Transaction *transaction, VIO *source, http_parser_init(&this->_http_parser); } +Http3HeaderFramer::~Http3HeaderFramer() +{ + _header.destroy(); + if (_header_block != nullptr) { + free_MIOBuffer(_header_block); + } +} + Http3FrameUPtr Http3HeaderFramer::generate_frame() { diff --git a/proxy/http3/Http3HeaderFramer.h b/proxy/http3/Http3HeaderFramer.h index 98f77ab3c94..7a369054750 100644 --- a/proxy/http3/Http3HeaderFramer.h +++ b/proxy/http3/Http3HeaderFramer.h @@ -38,6 +38,7 @@ class Http3HeaderFramer : public Http3FrameGenerator { public: Http3HeaderFramer(Http3Transaction *transaction, VIO *source, QPACK *qpack, uint64_t stream_id); + ~Http3HeaderFramer(); // Http3FrameGenerator Http3FrameUPtr generate_frame() override; diff --git a/proxy/http3/Http3Session.cc b/proxy/http3/Http3Session.cc index ac0416da155..cf543c2bc45 100644 --- a/proxy/http3/Http3Session.cc +++ b/proxy/http3/Http3Session.cc @@ -55,6 +55,7 @@ void HQSession::remove_transaction(HQTransaction *trans) { this->_transaction_list.remove(trans); + delete trans; return; }