diff --git a/lib/faraday/adapter/em_synchrony.rb b/lib/faraday/adapter/em_synchrony.rb index 305e702f..5a766777 100644 --- a/lib/faraday/adapter/em_synchrony.rb +++ b/lib/faraday/adapter/em_synchrony.rb @@ -70,6 +70,12 @@ module Faraday else raise Error::ConnectionFailed, err end + rescue RuntimeError => err + if err.message == "connection closed by server" + raise Error::ConnectionFailed, err + else + raise + end rescue => err if defined?(OpenSSL) && OpenSSL::SSL::SSLError === err raise Faraday::SSLError, err diff --git a/script/test b/script/test index 180dbdd3..961d0fc3 100755 --- a/script/test +++ b/script/test @@ -132,6 +132,7 @@ if [ -n "$(filter_matching "adapters" "${test_files[@]}")" ]; then cleanup() { if [ $? -ne 0 ] && [ -n "$TRAVIS" ]; then cat log/test.log + cat log/proxy.log fi kill "$server_pid" kill "$proxy_pid" diff --git a/test/adapters/integration.rb b/test/adapters/integration.rb index 4e0f81cf..800ee388 100644 --- a/test/adapters/integration.rb +++ b/test/adapters/integration.rb @@ -207,8 +207,10 @@ module Adapters conn.get '/echo' end - unless self.class.ssl_mode? && self.class.jruby? + unless self.class.ssl_mode? && (self.class.jruby? || + adapter == :em_http || adapter == :em_synchrony) # JRuby raises "End of file reached" which cannot be distinguished from a 407 + # EM raises "connection closed by server" due to https://github.com/igrigorik/em-socksify/pull/19 assert_equal %{407 "Proxy Authentication Required "}, err.message end end