U
    @f~                     @   s   d dl Z d dlZed ejd ZejZejdddddg Zd dlmZ eee	 e
ed	 e jd
d dkrd dlmZ ejZejZejZejZ[edfddZdS )    Nzeventlet.green._socket_nodnscreate_connectiongetaddrinfogethostbynamegethostbyname_exgetnameinfo)slurp_properties)ZsrckeysZEVENTLET_NO_GREENDNS yes)greendnsc                 C   s   d}| \}}t ||dtD ]}|\}}}	}
}d}z@t|||	}|tk	rP|| |r^|| || |W   S  tk
r } z|}|dk	r|  W 5 d}~X Y qX qt	|tst|}|dS )a  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.
    z!getaddrinfo returns an empty listr   N)
r   SOCK_STREAMsocket_GLOBAL_DEFAULT_TIMEOUT
settimeoutbindconnecterrorclose
isinstance)addresstimeoutsource_addresserrhostportresafsocktypeproto	canonnamesasocke r"   O/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/green/socket.pyr      s(    




)ossys
__import__modulesZ__socket__all__Z__patched__Zeventlet.patcherr   globalsdirenvirongetlowerZeventlet.supportr
   r   r   r   r   r   r   r"   r"   r"   r#   <module>   s.   
