about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-01-24 00:23:01 +0000
committerEric Wong <e@80x24.org>2015-01-24 00:23:01 +0000
commit61149fd36bb1959bc2ae4ecb71c68fbda3c35c7a (patch)
treeff44842d25e015396458301024d37f005244ed20 /lib
parentd5e52cbf66d9607a72193680239d2cafe86a190b (diff)
downloadyahns-61149fd36bb1959bc2ae4ecb71c68fbda3c35c7a.tar.gz
We may not need this temporary file if we've flushed everything
out and entered bypass mode.
Diffstat (limited to 'lib')
-rw-r--r--lib/yahns/wbuf.rb10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/yahns/wbuf.rb b/lib/yahns/wbuf.rb
index 991557e..4eed2c5 100644
--- a/lib/yahns/wbuf.rb
+++ b/lib/yahns/wbuf.rb
@@ -1,5 +1,5 @@
 # -*- encoding: binary -*-
-# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> et. al.
+# Copyright (C) 2013-2015 all contributors <yahns-public@yhbt.net>
 # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
 require_relative 'wbuf_common'
 
@@ -31,7 +31,7 @@ class Yahns::Wbuf # :nodoc:
   include Yahns::WbufCommon
 
   def initialize(body, persist, tmpdir)
-    @tmpio = Yahns::TmpIO.new(tmpdir)
+    @tmpio = nil
     @tmpdir = tmpdir
     @sf_offset = @sf_count = 0
     @wbuf_persist = persist # whether or not we keep the connection alive
@@ -50,6 +50,7 @@ class Yahns::Wbuf # :nodoc:
       @bypass = false # ugh, continue to buffering to file
     end while @bypass
 
+    @tmpio ||= Yahns::TmpIO.new(@tmpdir)
     @sf_count += @tmpio.write(buf)
     case rv = client.trysendfile(@tmpio, @sf_offset, @sf_count)
     when Integer
@@ -64,16 +65,15 @@ class Yahns::Wbuf # :nodoc:
 
     # we're all caught up, try to prevent dirty data from getting flushed
     # to disk if we can help it.
-    @tmpio.close
+    @tmpio = @tmpio.close
     @sf_offset = 0
-    @tmpio = Yahns::TmpIO.new(@tmpdir)
     @bypass = true
     nil
   end
 
   # called by last wbuf_flush
   def wbuf_close(client)
-    @tmpio = @tmpio.close
+    @tmpio = @tmpio.close if @tmpio
     wbuf_close_common(client)
   end
 end