From c97b5254d6cc50264786270cdd09ed9485a5bec6 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 12 Jul 2016 21:11:34 +0000 Subject: wbuf_lite: truncate StringIO when done And explain why this is doable for StringIO and not TmpIO, which is file-backed. --- lib/yahns/wbuf_lite.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/yahns/wbuf_lite.rb b/lib/yahns/wbuf_lite.rb index 2da5349..1902ce7 100644 --- a/lib/yahns/wbuf_lite.rb +++ b/lib/yahns/wbuf_lite.rb @@ -108,6 +108,12 @@ class Yahns::WbufLite # :nodoc: end def wbuf_abort - @tmpio = @tmpio.close if @tmpio + # we can safely truncate since this is a StringIO, we cannot do this + # with a real file because zero-copy with sendfile means truncating + # a while could clobber in-flight data + if @tmpio + @tmpio.truncate(0) + @tmpio = @tmpio.close + end end end -- cgit v1.2.3-24-ge0c7