From 6853b44a9260390b6e688e7c42aedcd5540e291f Mon Sep 17 00:00:00 2001 From: shugo Date: Fri, 16 Mar 2012 05:12:39 +0000 Subject: * lib/net/imap.rb (initialize): raise Net::IMAP::Error when the connection is closed without a greeting response. [ruby-core:40938] [Bug #5616] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/net/imap.rb | 4 ++++ test/net/imap/test_imap.rb | 19 +++++++++++++++++++ 3 files changed, 29 insertions(+) diff --git a/ChangeLog b/ChangeLog index 49c606b244..7fb483d7b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Fri Mar 16 14:10:45 2012 Shugo Maeda + + * lib/net/imap.rb (initialize): raise Net::IMAP::Error when the + connection is closed without a greeting response. + [ruby-core:40938] [Bug #5616] + Fri Mar 16 13:50:12 2012 Shugo Maeda * lib/net/imap.rb (rfc822_text): ignore [] after RFC822. diff --git a/lib/net/imap.rb b/lib/net/imap.rb index b2193dbf93..6e88fb96e4 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -1065,6 +1065,10 @@ module Net @exception = nil @greeting = get_response + if @greeting.nil? + @sock.close + raise Error, "connection closed" + end if @greeting.name == "BYE" @sock.close raise ByeResponseError, @greeting diff --git a/test/net/imap/test_imap.rb b/test/net/imap/test_imap.rb index cf179c85d8..df9cd8b8a2 100644 --- a/test/net/imap/test_imap.rb +++ b/test/net/imap/test_imap.rb @@ -418,6 +418,25 @@ class IMAPTest < Test::Unit::TestCase end end + def test_connection_closed_without_greeting + server = create_tcp_server + port = server.addr[1] + Thread.start do + begin + sock = server.accept + sock.close + rescue + end + end + begin + assert_raise(Net::IMAP::Error) do + Net::IMAP.new(SERVER_ADDR, :port => port) + end + ensure + server.close + end + end + def test_default_port assert_equal(143, Net::IMAP.default_port) assert_equal(143, Net::IMAP.default_imap_port) -- cgit v1.2.3