Edit File: connection.cpython-36.pyc
3 nf�\������������������@���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���)Zconnr�����r���� /usr/lib/python3.6/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�socketZgetaddrinfoZSOCK_STREAM�_set_socket_options�_GLOBAL_DEFAULT_TIMEOUTZ settimeout�bindZconnect�error�close)Zaddressr ���Zsource_addressZsocket_options�hostZport�err�family�resZafZsocktype�protoZ canonnameZsar����er���r���r����create_connection!���s2���� r���c�������������C���s(���|d�krd�S�x|D�]}|�j�|���qW�d�S�)N)Z setsockopt)r���Zoptions�optr���r���r���r���U���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���ZAF_INET�HAS_IPV6Z AF_UNSPEC)r���r���r���r���r���]���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���Zis_appengine_sandboxr����has_ipv6ZAF_INET6r���� Exceptionr���)r���r���r!���r���r���r���� _has_ipv6h���s����r#���z::1)Z __future__r���r����waitr���r���Zcontribr���r ���r���r���r���r���r#���r ���r���r���r���r����<module>���s���3