From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS47066 71.19.144.0/20 X-Spam-Status: No, score=-1.2 required=3.0 tests=BAYES_00,FREEMAIL_FROM, FROM_STARTS_WITH_NUMS,MSGID_FROM_MTA_HEADER shortcircuit=no autolearn=no version=3.3.2 Path: news.gmane.org!not-for-mail From: Hleb Valoshka <375gnu@gmail.com> Newsgroups: gmane.comp.lang.ruby.kgio.general Subject: [PATCH] Close tempfile and unlink it immediately. Date: Sat, 7 Sep 2013 23:07:36 +0300 Message-ID: <1378584456-22228-1-git-send-email-375GNU@Gmail.COM> References: <1378584456-22228-1-git-send-email-375GNU@Gmail.COM> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1378584528 6809 80.91.229.3 (7 Sep 2013 20:08:48 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 7 Sep 2013 20:08:48 +0000 (UTC) To: kgio@librelist.org Original-X-From: kgio@librelist.org Sat Sep 07 22:08:52 2013 Return-path: Envelope-to: gclrkg-kgio@m.gmane.org In-Reply-To: <1378584456-22228-1-git-send-email-375GNU@Gmail.COM> List-Archive: List-Help: List-Id: List-Post: List-Subscribe: List-Unsubscribe: Precedence: list Original-Sender: kgio@librelist.org Xref: news.gmane.org gmane.comp.lang.ruby.kgio.general:217 Archived-At: Received: from zedshaw2.xen.prgmr.com ([71.19.156.177]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VIOoN-0004T5-PX for gclrkg-kgio@m.gmane.org; Sat, 07 Sep 2013 22:08:52 +0200 Received: from zedshaw2.xen.prgmr.com (unknown [IPv6:::1]) by zedshaw2.xen.prgmr.com (Postfix) with ESMTP id 0940374BF1 for ; Sat, 7 Sep 2013 20:18:05 +0000 (UTC) When a Tempfile object is garbage collected, or when the Ruby interpreter exits, its associated temporary file is automatically deleted. This may lead to race condition when Tempfile is used like in these tests. --- test/test_autopush.rb | 3 +-- test/test_unix_client_read_server_write.rb | 3 +-- test/test_unix_connect.rb | 3 +-- test/test_unix_server.rb | 3 +-- test/test_unix_server_read_client_write.rb | 3 +-- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/test/test_autopush.rb b/test/test_autopush.rb index 6c6e05f..38b7c52 100644 --- a/test/test_autopush.rb +++ b/test/test_autopush.rb @@ -44,8 +44,7 @@ class TestAutopush < Test::Unit::TestCase Kgio.autopush = true tmp = Tempfile.new('kgio_unix') @path = tmp.path - File.unlink(@path) - tmp.close rescue nil + tmp.close! @srv = Kgio::UNIXServer.new(@path) @rd = Kgio::UNIXSocket.new(@path) t0 = nil diff --git a/test/test_unix_client_read_server_write.rb b/test/test_unix_client_read_server_write.rb index 2f2b7b9..c8835cd 100644 --- a/test/test_unix_client_read_server_write.rb +++ b/test/test_unix_client_read_server_write.rb @@ -7,8 +7,7 @@ class TestUnixClientReadServerWrite < Test::Unit::TestCase @tmpdir = Dir.mktmpdir('kgio_unix_0') tmp = Tempfile.new('kgio_unix_0', @tmpdir) @path = tmp.path - File.unlink(@path) - tmp.close rescue nil + tmp.close! @srv = Kgio::UNIXServer.new(@path) @rd = Kgio::UNIXSocket.new(@path) @wr = @srv.kgio_tryaccept diff --git a/test/test_unix_connect.rb b/test/test_unix_connect.rb index 60cb8c0..7b19941 100644 --- a/test/test_unix_connect.rb +++ b/test/test_unix_connect.rb @@ -18,8 +18,7 @@ class TestKgioUnixConnect < Test::Unit::TestCase @tmpdir = Dir.mktmpdir('kgio_unix_1') tmp = Tempfile.new('kgio_unix_1', @tmpdir) @path = tmp.path - File.unlink(@path) - tmp.close rescue nil + tmp.close! @srv = Kgio::UNIXServer.new(@path) @addr = Socket.pack_sockaddr_un(@path) end diff --git a/test/test_unix_server.rb b/test/test_unix_server.rb index 02e4d8d..96769b1 100644 --- a/test/test_unix_server.rb +++ b/test/test_unix_server.rb @@ -8,8 +8,7 @@ class TestKgioUNIXServer < Test::Unit::TestCase @tmpdir = Dir.mktmpdir('kgio_unix_2') tmp = Tempfile.new('kgio_unix_2', @tmpdir) @path = tmp.path - File.unlink(@path) - tmp.close rescue nil + tmp.close! @srv = Kgio::UNIXServer.new(@path) @host = '127.0.0.1' end diff --git a/test/test_unix_server_read_client_write.rb b/test/test_unix_server_read_client_write.rb index a994e01..24581e1 100644 --- a/test/test_unix_server_read_client_write.rb +++ b/test/test_unix_server_read_client_write.rb @@ -7,8 +7,7 @@ class TestUnixServerReadClientWrite < Test::Unit::TestCase @tmpdir = Dir.mktmpdir('kgio_unix_3') tmp = Tempfile.new('kgio_unix_3', @tmpdir) @path = tmp.path - File.unlink(@path) - tmp.close rescue nil + tmp.close! @srv = Kgio::UNIXServer.new(@path) @wr = Kgio::UNIXSocket.new(@path) @rd = @srv.kgio_tryaccept -- 1.8.4