@@ -1065,7 +1065,7 @@ def connect(address, *, timeout, custom_resolver, ssl_context, keep_alive):
1065
1065
""" Connect and perform a handshake and return a valid Connection object,
1066
1066
assuming a protocol version can be agreed.
1067
1067
"""
1068
- last_error = None
1068
+ errors = []
1069
1069
# Establish a connection to the host and port specified
1070
1070
# Catches refused connections see:
1071
1071
# https://docs.python.org/2/library/errno.html
@@ -1080,21 +1080,23 @@ def connect(address, *, timeout, custom_resolver, ssl_context, keep_alive):
1080
1080
except (BoltError , DriverError , OSError ) as error :
1081
1081
if s :
1082
1082
_close_socket (s )
1083
- last_error = error
1083
+ errors . append ( error )
1084
1084
except Exception :
1085
1085
if s :
1086
1086
_close_socket (s )
1087
1087
raise
1088
- if last_error is None :
1088
+ if not errors :
1089
1089
raise ServiceUnavailable (
1090
1090
"Couldn't connect to %s (resolved to %s)" % (
1091
1091
str (address ), tuple (map (str , resolved_addresses )))
1092
1092
)
1093
1093
else :
1094
1094
raise ServiceUnavailable (
1095
- "Couldn't connect to %s (resolved to %s)" % (
1096
- str (address ), tuple (map (str , resolved_addresses )))
1097
- ) from last_error
1095
+ "Couldn't connect to %s (resolved to %s):\n %s" % (
1096
+ str (address ), tuple (map (str , resolved_addresses )),
1097
+ "\n " .join (map (str , errors ))
1098
+ )
1099
+ ) from errors [0 ]
1098
1100
1099
1101
1100
1102
def check_supported_server_product (agent ):
0 commit comments