diff --git a/plugins/experimental/inliner/ats-inliner.cc b/plugins/experimental/inliner/ats-inliner.cc index 8da0089fb86..594d8a45a66 100644 --- a/plugins/experimental/inliner/ats-inliner.cc +++ b/plugins/experimental/inliner/ats-inliner.cc @@ -95,7 +95,7 @@ handle_transform(const TSCont c) } int -null_transform(TSCont c, TSEvent e, void *) +inliner_transform(TSCont c, TSEvent e, void *) { if (TSVConnClosedGet(c)) { TSDebug(PLUGIN_TAG, "connection closed"); @@ -165,7 +165,7 @@ void transform_add(const TSHttpTxn t) { assert(t != NULL); - const TSVConn vconnection = TSTransformCreate(null_transform, t); + const TSVConn vconnection = TSTransformCreate(inliner_transform, t); assert(vconnection != NULL); TSHttpTxnHookAdd(t, TS_HTTP_RESPONSE_TRANSFORM_HOOK, vconnection); } diff --git a/plugins/experimental/inliner/inliner-handler.cc b/plugins/experimental/inliner/inliner-handler.cc index d075661504d..09cf3cfca95 100644 --- a/plugins/experimental/inliner/inliner-handler.cc +++ b/plugins/experimental/inliner/inliner-handler.cc @@ -33,7 +33,7 @@ namespace ats namespace inliner { Handler::Handler(const TSIOBufferReader r, ats::io::IOSinkPointer &&i) - : ioSink_(i), sink_(ioSink_->branch()), sink2_(sink_->branch()), reader_(TSIOBufferReaderClone(r)), counter_(0) + : ioSink_(i), sink_(ioSink_->branch()), sink2_(sink_->branch()), reader_(TSIOBufferReaderClone(r)), counter_(0), abort_(false) { assert(ioSink_); assert(sink_); @@ -141,6 +141,7 @@ namespace inliner void Handler::abort(void) { + abort_ = true; assert(ioSink_); ioSink_->abort(); } diff --git a/plugins/experimental/inliner/inliner-handler.h b/plugins/experimental/inliner/inliner-handler.h index d7caba10f91..692a5e8a711 100644 --- a/plugins/experimental/inliner/inliner-handler.h +++ b/plugins/experimental/inliner/inliner-handler.h @@ -38,13 +38,16 @@ namespace inliner ats::io::SinkPointer sink_, sink2_; const TSIOBufferReader reader_; size_t counter_; + bool abort_; ~Handler() { assert(reader_ != NULL); - const int64_t available = TSIOBufferReaderAvail(reader_); - if (available > 0) { - TSIOBufferReaderConsume(reader_, available); + if (!abort_) { + const int64_t available = TSIOBufferReaderAvail(reader_); + if (available > 0) { + TSIOBufferReaderConsume(reader_, available); + } } TSIOBufferReaderFree(reader_); }