3
”Re ã @ sn d dl mZ d dlZddlmZmZ ddlmZ dd„ Zej ddfd d
„Z
dd„ Zd
d„ Zdd„ Z
e
dƒZdS )é )Úabsolute_importNé )ÚNoWayToWaitForSocketErrorÚ
wait_for_readé )Ú_appengine_environc C sJ t | ddƒ}|dkrdS |dkr$dS yt|dd�S tk
rD dS X dS )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.
ÚsockFNTg )Útimeout)Úgetattrr r )Úconnr © r ú’/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el8.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/urllib3/util/connection.pyÚis_connection_dropped s
r c C sô | \}}|j dƒr|jdƒ}d}tƒ }x²tj|||tjƒD ]œ}|\} }
}}}
d}yHtj| |
|ƒ}t||ƒ |tjk r~|j|ƒ |rŒ|j |ƒ |j
|
ƒ |S tjk
rÔ } z|}|dk rÄ|jƒ d}W Y dd}~X q:X q:W |dk ræ|‚tjdƒ‚dS )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 s( |d krd S x|D ]}| j |Ž qW d S )N)Ú
setsockopt)r ÚoptionsÚoptr r r
r Y s
r c C s t j} trt 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 sb d}d}t jƒ rdS tjrRy"tjtjƒ}|j| dfƒ d}W n tk
rP Y nX |r^|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
Ú