Fixed some memory leaks with http/3 (#9336)
diff --git a/proxy/http3/Http3HeaderFramer.cc b/proxy/http3/Http3HeaderFramer.cc
index 9cd17a1..38d15e7 100644
--- a/proxy/http3/Http3HeaderFramer.cc
+++ b/proxy/http3/Http3HeaderFramer.cc
@@ -36,6 +36,14 @@
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 98f77ab..7a36905 100644
--- a/proxy/http3/Http3HeaderFramer.h
+++ b/proxy/http3/Http3HeaderFramer.h
@@ -38,6 +38,7 @@
{
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 60d0f0f..aeb7c4d 100644
--- a/proxy/http3/Http3Session.cc
+++ b/proxy/http3/Http3Session.cc
@@ -55,6 +55,7 @@
HQSession::remove_transaction(HQTransaction *trans)
{
this->_transaction_list.remove(trans);
+ delete trans;
return;
}