From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,BAYES_00, URIBL_BLOCKED shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: yahns-public@yhbt.net Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id ADAB11F6AB for ; Sat, 24 Jan 2015 00:25:28 +0000 (UTC) From: Eric Wong To: yahns-public@yhbt.net Subject: [PATCH] wbuf: lazily (re)create temporary file Date: Sat, 24 Jan 2015 00:25:28 +0000 Message-Id: <1422059128-3998-2-git-send-email-e@80x24.org> X-Mailer: git-send-email 2.2.1.203.g624e5c2 List-Id: We may not need this temporary file if we've flushed everything out and entered bypass mode. --- lib/yahns/wbuf.rb | 10 +++++----- 1 file 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 et. al. +# Copyright (C) 2013-2015 all contributors # 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 @@ def wbuf_write(client, buf) @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 @@ def wbuf_write(client, buf) # 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 -- EW