‹“Re ã @ sš d d l m Z d d l Z d d l m Z m Z d d l m Z d d „ Z e j d d d d
„ Z
d d „ Z d
d „ Z d d „ Z
e
d ƒ Z d S)é )Úabsolute_importNé )ÚNoWayToWaitForSocketErrorÚ
wait_for_readé )Ú_appengine_environc C sc t | d d ƒ } | d k r" d S| d k r2 d Sy t | d d ƒSWn t k
r^ d SYn Xd S)a
Returns True if the connection is dropped and should be closed.
:param conn:
:class:`httplib.HTTPConnection` object.
Note: For platforms like AppEngine, this will always return ``False`` to
let the platform handle connection recycling transparently for us.
ÚsockFNTÚtimeoutg )Úgetattrr r )Úconnr © r ú’/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/urllib3/util/connection.pyÚis_connection_dropped s
r c C sR | \ } } | j d ƒ r* | j d ƒ } d } t ƒ } xñ t j | | | t j ƒ D]Ô } | \ } }
} } }
d } yf t j | |
| ƒ } t | | ƒ | t j k r· | j | ƒ | rÊ | j | ƒ | j
|
ƒ | SWqU t j k
r(} z' | } | d k r| j ƒ d } WYd d } ~ XqU XqU W| d k r?| ‚ t j d ƒ ‚ d S)ad Connect to *address* and return the socket object.
Convenience function. Connect to *address* (a 2-tuple ``(host,
port)``) and return the socket object. Passing the optional
*timeout* parameter will set the timeout on the socket instance
before attempting to connect. If no *timeout* is supplied, the
global default timeout setting returned by :func:`getdefaulttimeout`
is used. If *source_address* is set it must be a tuple of (host, port)
for the socket to bind as a source address before making the connection.
An host of '' or port 0 tells the OS to use the default.
ú[z[]Nz!getaddrinfo returns an empty list)
Ú
startswithÚstripÚallowed_gai_familyÚsocketÚgetaddrinfoÚSOCK_STREAMÚ_set_socket_optionsÚ_GLOBAL_DEFAULT_TIMEOUTÚ
settimeoutÚbindÚconnectÚerrorÚclose)Úaddressr Úsource_addressÚsocket_optionsÚhostÚportÚerrÚfamilyÚresÚafÚsocktypeÚprotoÚ canonnameÚsar Úer r r
Úcreate_connection! s2 "
r+ c C s2 | d k r d Sx | D] } | j | Œ q Wd S)N)Ú
setsockopt)r ÚoptionsÚoptr r r
r Y s
r c C s t j } t r t j } | S)z³This function is designed to work in the context of
getaddrinfo, where family=socket.AF_UNSPEC is the default and
will perform a DNS search for both IPv6 and IPv4 records.)r ÚAF_INETÚHAS_IPV6Ú AF_UNSPEC)r# r r r
r a s r c C s} d } d } t j ƒ r d St j ri y/ t j t j ƒ } | j | d f ƒ d } Wn t k
rh Yn X| ry | j ƒ | S)z6 Returns True if the system can bind an IPv6 address. NFr T)r Úis_appengine_sandboxr Úhas_ipv6ÚAF_INET6r Ú Exceptionr )r r r3 r r r
Ú _has_ipv6l s
r6 z::1)Ú
__future__r r Úwaitr r Úcontribr r r r+ r r r6 r0 r r r r
Ú