(self)
| 933 | return addresses |
| 934 | |
| 935 | def _connect_socket(self): |
| 936 | sockerr = None |
| 937 | addresses = self._get_socket_addresses() |
| 938 | for (af, socktype, proto, _, sockaddr) in addresses: |
| 939 | try: |
| 940 | self._socket = self._socket_impl.socket(af, socktype, proto) |
| 941 | if self.ssl_context: |
| 942 | self._socket = self._wrap_socket_from_context() |
| 943 | self._socket.settimeout(self.connect_timeout) |
| 944 | self._initiate_connection(sockaddr) |
| 945 | self._socket.settimeout(None) |
| 946 | |
| 947 | # PYTHON-1331 |
| 948 | # |
| 949 | # Most checking is done via the check_hostname param on the SSLContext. |
| 950 | # Subclasses can add additional behaviours via _validate_hostname() so |
| 951 | # run that here. |
| 952 | if self._check_hostname: |
| 953 | self._validate_hostname() |
| 954 | sockerr = None |
| 955 | break |
| 956 | except socket.error as err: |
| 957 | if self._socket: |
| 958 | self._socket.close() |
| 959 | self._socket = None |
| 960 | sockerr = err |
| 961 | |
| 962 | if sockerr: |
| 963 | raise socket.error(sockerr.errno, "Tried connecting to %s. Last error: %s" % |
| 964 | ([a[4] for a in addresses], sockerr.strerror or sockerr)) |
| 965 | |
| 966 | if self.sockopts: |
| 967 | for args in self.sockopts: |
| 968 | self._socket.setsockopt(*args) |
| 969 | |
| 970 | def _enable_compression(self): |
| 971 | if self._compressor: |
no test coverage detected