+++ /dev/null
-import os
-import sys
-from eventlet.hubs import get_hub
-__import__('eventlet.green._socket_nodns')
-__socket = sys.modules['eventlet.green._socket_nodns']
-
-__all__ = __socket.__all__
-__patched__ = __socket.__patched__ + ['gethostbyname', 'getaddrinfo', 'create_connection', ]
-
-from eventlet.patcher import slurp_properties
-slurp_properties(__socket, globals(), srckeys=dir(__socket))
-
-
-greendns = None
-if os.environ.get("EVENTLET_NO_GREENDNS", '').lower() != "yes":
- try:
- from eventlet.support import greendns
- except ImportError as ex:
- pass
-
-if greendns:
- gethostbyname = greendns.gethostbyname
- getaddrinfo = greendns.getaddrinfo
- gethostbyname_ex = greendns.gethostbyname_ex
- getnameinfo = greendns.getnameinfo
- __patched__ = __patched__ + ['gethostbyname_ex', 'getnameinfo']
-
-
-def create_connection(address,
- timeout=_GLOBAL_DEFAULT_TIMEOUT,
- source_address=None):
- """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.
- """
-
- msg = "getaddrinfo returns an empty list"
- host, port = address
- for res in getaddrinfo(host, port, 0, SOCK_STREAM):
- af, socktype, proto, canonname, sa = res
- sock = None
- try:
- sock = socket(af, socktype, proto)
- if timeout is not _GLOBAL_DEFAULT_TIMEOUT:
- sock.settimeout(timeout)
- if source_address:
- sock.bind(source_address)
- sock.connect(sa)
- return sock
-
- except error as e:
- msg = e
- if sock is not None:
- sock.close()
-
- raise error(msg)