[TS-4256] flagging aborts and avoiding consuming the reader
This closes #511.


Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/1e9c9484
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/1e9c9484
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/1e9c9484

Branch: refs/heads/master
Commit: 1e9c9484cacbfaa4ded7ad2c7e7baad74cb0f4f6
Parents: 1448b4b
Author: Daniel Vitor Morilha <[email protected]>
Authored: Fri Mar 4 11:25:54 2016 -0800
Committer: Alan M. Carroll <[email protected]>
Committed: Sat Mar 19 11:32:30 2016 -0500

----------------------------------------------------------------------
 plugins/experimental/inliner/inliner-handler.cc | 3 ++-
 plugins/experimental/inliner/inliner-handler.h  | 9 ++++++---
 2 files changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1e9c9484/plugins/experimental/inliner/inliner-handler.cc
----------------------------------------------------------------------
diff --git a/plugins/experimental/inliner/inliner-handler.cc 
b/plugins/experimental/inliner/inliner-handler.cc
index d075661..09cf3cf 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();
   }

http://git-wip-us.apache.org/repos/asf/trafficserver/blob/1e9c9484/plugins/experimental/inliner/inliner-handler.h
----------------------------------------------------------------------
diff --git a/plugins/experimental/inliner/inliner-handler.h 
b/plugins/experimental/inliner/inliner-handler.h
index d7caba1..692a5e8 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_);
     }

Reply via email to