aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/net/http.rb7
-rw-r--r--test/net/http/test_http.rb9
3 files changed, 21 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index e4fa3c2ecd..d6e9d901af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Sat Jan 3 10:38:52 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
+
+ * lib/net/http.rb: More descriptive error message when net/http fails
+ to connect to a server. Patch by @xaviershay [fix GH-700]
+ * test/net/http/test_http.rb: ditto.
+
Sat Jan 3 10:14:51 2015 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
* ext/openssl/ossl.h: Make `SSL_SESSION_cmp` use `CRYPTO_memcmp`
diff --git a/lib/net/http.rb b/lib/net/http.rb
index 03823ae735..37b6b82694 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -876,7 +876,12 @@ module Net #:nodoc:
D "opening connection to #{conn_address}:#{conn_port}..."
s = Timeout.timeout(@open_timeout, Net::OpenTimeout) {
- TCPSocket.open(conn_address, conn_port, @local_host, @local_port)
+ begin
+ TCPSocket.open(conn_address, conn_port, @local_host, @local_port)
+ rescue => e
+ raise e, "Failed to open TCP connection to " +
+ "#{conn_address}:#{conn_port} (#{e.message})"
+ end
}
s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
D "opened"
diff --git a/test/net/http/test_http.rb b/test/net/http/test_http.rb
index 9d5cf3972b..4d82fd7d1e 100644
--- a/test/net/http/test_http.rb
+++ b/test/net/http/test_http.rb
@@ -188,6 +188,15 @@ class TestNetHTTP < Test::Unit::TestCase
end
end
+ def test_failure_message_includes_failed_domain_and_port
+ begin
+ Net::HTTP.get(URI.parse("http://doesnotexist.bogus"))
+ fail "should have raised"
+ rescue => e
+ assert_includes e.message, "doesnotexist.bogus:80"
+ end
+ end
+
end
module TestNetHTTP_version_1_1_methods