diff --git a/plugins/experimental/inliner/cache-handler.h b/plugins/experimental/inliner/cache-handler.h index 1744cd68a54..2bde34e8a01 100644 --- a/plugins/experimental/inliner/cache-handler.h +++ b/plugins/experimental/inliner/cache-handler.h @@ -326,11 +326,12 @@ namespace inliner request += std::string(b1, i); request += "\r\n\r\n"; - ats::io::IO *const io = new io::IO(); + auto io{std::make_unique()}; TSDebug(PLUGIN_TAG, "request:\n%s", request.c_str()); - ats::get(io, io->copy(request), AnotherClass(src_)); + auto size{io->copy(request)}; + ats::get(std::move(io), size, AnotherClass(src_)); } }; diff --git a/plugins/experimental/inliner/fetcher.h b/plugins/experimental/inliner/fetcher.h index e82f4802bc3..df43fb73b4a 100644 --- a/plugins/experimental/inliner/fetcher.h +++ b/plugins/experimental/inliner/fetcher.h @@ -50,6 +50,8 @@ #include #include +#include +#include #include "chunk-decoder.h" #include "ts.h" @@ -98,7 +100,7 @@ template struct HttpTransaction { bool abort_; bool timeout_; io::IO *in_; - io::IO *out_; + std::unique_ptr out_; TSVConn vconnection_; TSCont continuation_; T t_; @@ -111,10 +113,6 @@ template struct HttpTransaction { delete in_; in_ = nullptr; } - if (out_ != nullptr) { - delete out_; - out_ = nullptr; - } timeout(0); assert(vconnection_ != nullptr); if (abort_) { @@ -129,12 +127,12 @@ template struct HttpTransaction { } } - HttpTransaction(TSVConn v, TSCont c, io::IO *const i, const uint64_t l, const T &t) + HttpTransaction(TSVConn v, TSCont c, std::unique_ptr i, const uint64_t l, const T &t) : parsingHeaders_(false), abort_(false), timeout_(false), in_(nullptr), - out_(i), + out_(std::move(i)), vconnection_(v), continuation_(c), t_(t), @@ -142,7 +140,7 @@ template struct HttpTransaction { { assert(vconnection_ != nullptr); assert(continuation_ != nullptr); - assert(out_ != nullptr); + assert(out_.get() != nullptr); assert(l > 0); out_->vio = TSVConnWrite(vconnection_, continuation_, out_->reader, l); } @@ -271,8 +269,7 @@ template struct HttpTransaction { assert(self->vconnection_); TSVConnShutdown(self->vconnection_, 0, 1); assert(self->out_ != nullptr); - delete self->out_; - self->out_ = nullptr; + self->out_.reset(); break; case TS_EVENT_VCONN_WRITE_READY: TSDebug(PLUGIN_TAG, "HttpTransaction: Write Ready (Done: %" PRId64 " Todo: %" PRId64 ")", TSVIONDoneGet(self->out_->vio), @@ -299,7 +296,7 @@ template struct HttpTransaction { template bool -get(const std::string &a, io::IO *const i, const int64_t l, const T &t, const int64_t ti = 0) +get(const std::string &a, std::unique_ptr i, const int64_t l, const T &t, const int64_t ti = 0) { using Transaction = HttpTransaction; struct sockaddr_in socket; @@ -313,7 +310,7 @@ get(const std::string &a, io::IO *const i, const int64_t l, const T &t, const in assert(vconn != nullptr); TSCont contp = TSContCreate(Transaction::handle, nullptr); assert(contp != nullptr); - Transaction *transaction = new Transaction(vconn, contp, i, l, t); + Transaction *transaction = new Transaction(vconn, contp, std::move(i), l, t); TSContDataSet(contp, transaction); if (ti > 0) { TSDebug(PLUGIN_TAG, "ats::get Setting active timeout to: %" PRId64, ti); @@ -324,8 +321,8 @@ get(const std::string &a, io::IO *const i, const int64_t l, const T &t, const in template bool -get(io::IO *const i, const int64_t l, const T &t, const int64_t ti = 0) +get(std::unique_ptr i, const int64_t l, const T &t, const int64_t ti = 0) { - return get("127.0.0.1", i, l, t, ti); + return get("127.0.0.1", std::move(i), l, t, ti); } } // namespace ats