Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib/python3.5/site-packages/urllib3/util/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/urllib3/util/__pycache__/connection.cpython-35.pyc



[��@s�ddlmZddlZddlmZmZdd�Zejdddd�Zd	d
�Z	dd�Z
d
d�Zed�ZdS)�)�absolute_importN�)�NoWayToWaitForSocketError�
wait_for_readcCsct|dd�}|dkr"dS|dkr2dSyt|dd�SWntk
r^dSYnXdS)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)�getattrrr)Zconnr�r	�H/opt/alt/python35/lib/python3.5/site-packages/urllib3/util/connection.py�is_connection_droppeds

rcCsR|\}}|jd�r*|jd�}d}t�}x�tj|||tj�D]�}|\}	}
}}}
d}yftj|	|
|�}t||�|tjk	r�|j|�|r�|j	|�|j
|
�|SWqUtjk
r(}z'|}|dk	r|j�d}WYdd}~XqUXqUW|dk	r?|�tjd��dS)adConnect 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_addressZsocket_options�host�port�err�family�res�af�socktype�proto�	canonname�sar�er	r	r
�create_connection s2	"




r'cCs2|dkrdSx|D]}|j|�qWdS)N)�
setsockopt)r�options�optr	r	r
rTs
rcCstj}trtj}|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)rr	r	r
r\s		rcCsmd}d}tjrYy/tjtj�}|j|df�d}Wntk
rXYnX|ri|j�|S)z6 Returns True if the system can bind an IPv6 address. NFrT)r�has_ipv6�AF_INET6r�	Exceptionr)rrr.r	r	r
�	_has_ipv6gs	


r1z::1)
�
__future__rr�waitrrrrr'rrr1r,r	r	r	r
�<module>s3