diff --git a/example/plugins/c-api/client_context_dump/client_context_dump.cc b/example/plugins/c-api/client_context_dump/client_context_dump.cc index d416c72884b..f8572d775ce 100644 --- a/example/plugins/c-api/client_context_dump/client_context_dump.cc +++ b/example/plugins/c-api/client_context_dump/client_context_dump.cc @@ -163,6 +163,7 @@ CB_context_dump(TSCont, TSEvent, void *edata) for (int i = 0; i < count; i += 2) { dump_context(results[i], results[i + 1]); } + free(results); } } TSTextLogObjectFlush(context_dump_log); diff --git a/plugins/experimental/stale_response/stale_response.h b/plugins/experimental/stale_response/stale_response.h index 6c0454a8aff..a0a9071ea58 100644 --- a/plugins/experimental/stale_response/stale_response.h +++ b/plugins/experimental/stale_response/stale_response.h @@ -23,6 +23,8 @@ #pragma once +#include + #include "ts/apidefs.h" #include "ts_wrap.h" #include "ts/ts.h" @@ -63,6 +65,9 @@ struct ConfigInfo { if (this->body_data_mutex) { TSMutexDestroy(this->body_data_mutex); } + if (this->log_info.filename != PLUGIN_TAG) { + free(const_cast(this->log_info.filename)); + } } UintBodyMap *body_data = nullptr; TSMutex body_data_mutex; diff --git a/plugins/origin_server_auth/origin_server_auth.cc b/plugins/origin_server_auth/origin_server_auth.cc index 583ca0f785a..e2eaaa9a1c9 100644 --- a/plugins/origin_server_auth/origin_server_auth.cc +++ b/plugins/origin_server_auth/origin_server_auth.cc @@ -154,6 +154,8 @@ class S3Config; class ConfigCache { public: + ~ConfigCache(); + S3Config *get(const char *fname); private: @@ -601,6 +603,13 @@ class S3Config int _invalid_file_count = 0; }; +ConfigCache::~ConfigCache() +{ + for (auto &[key, data] : _cache) { + delete data.config.load(); + } +} + bool S3Config::parse_config(const std::string &config_fname) {