diff --git a/lib/net/imap.rb b/lib/net/imap.rb index 3bd776fc..a9965aec 100644 --- a/lib/net/imap.rb +++ b/lib/net/imap.rb @@ -3702,7 +3702,7 @@ def tcp_socket(host, port) s = Socket.tcp(host, port, :connect_timeout => open_timeout) s.setsockopt(:SOL_SOCKET, :SO_KEEPALIVE, true) s - rescue Errno::ETIMEDOUT + rescue Errno::ETIMEDOUT, IO::TimeoutError raise Net::OpenTimeout, "Timeout to open TCP connection to " + "#{host}:#{port} (exceeds #{open_timeout} seconds)" end diff --git a/test/net/imap/test_imap.rb b/test/net/imap/test_imap.rb index 95d61c11..a35fbca7 100644 --- a/test/net/imap/test_imap.rb +++ b/test/net/imap/test_imap.rb @@ -62,6 +62,14 @@ class IMAPTest < Net::IMAP::TestCase end end + def test_open_timeout + host = ENV.fetch("TEST_OPEN_TIMEOUT_HOST", "10.255.255.1") + pend host if host.start_with? "skip" + assert_raise(Net::OpenTimeout) do + Net::IMAP.new(host, open_timeout: 0) + end + end + def test_unexpected_eof server = create_tcp_server port = server.addr[1]