def create_socket(conf, log): """ Create a new socket for the given address. If the address is a tuple, a TCP socket is created. If it is a string, a Unix socket is created. Otherwise a TypeError is raised. """ # get it only once addr = conf.address if isinstance(addr, tuple): if util.is_ipv6(addr[0]): sock_type = TCP6Socket else: sock_type = TCPSocket elif isinstance(addr, basestring): sock_type = UnixSocket else: raise TypeError("Unable to create socket from: %r" % addr) if 'GUNICORN_FD' in os.environ: fd = int(os.environ.pop('GUNICORN_FD')) try: return sock_type(conf, log, fd=fd) except socket.error, e: if e[0] == errno.ENOTCONN: log.error("GUNICORN_FD should refer to an open socket.") else: raise
def create_socket(conf): """ Create a new socket for the given address. If the address is a tuple, a TCP socket is created. If it is a string, a Unix socket is created. Otherwise a TypeError is raised. """ # get it only once addr = conf.address if isinstance(addr, tuple): if util.is_ipv6(addr[0]): sock_type = TCP6Socket else: sock_type = TCPSocket elif isinstance(addr, basestring): sock_type = UnixSocket else: raise TypeError("Unable to create socket from: %r" % addr) if 'GUNICORN_FD' in os.environ: fd = int(os.environ.pop('GUNICORN_FD')) try: return sock_type(conf, fd=fd) except socket.error, e: if e[0] == errno.ENOTCONN: log.error("GUNICORN_FD should refer to an open socket.") else: raise
def _sock_type(addr): if isinstance(addr, tuple): if util.is_ipv6(addr[0]): sock_type = TCP6Socket else: sock_type = TCPSocket elif isinstance(addr, string_types): sock_type = UnixSocket else: raise TypeError("Unable to create socket from: %r" % addr) return sock_type
def create_socket(conf, log): """ Create a new socket for the given address. If the address is a tuple, a TCP socket is created. If it is a string, a Unix socket is created. Otherwise a TypeError is raised. """ # get it only once addr = conf.address if isinstance(addr, tuple): if util.is_ipv6(addr[0]): sock_type = TCP6Socket else: sock_type = TCPSocket elif isinstance(addr, string_types): sock_type = UnixSocket else: raise TypeError("Unable to create socket from: %r" % addr) if 'GUNICORN_FD' in os.environ: fd = int(os.environ.pop('GUNICORN_FD')) try: return sock_type(conf, log, fd=fd) except socket.error as e: if e.args[0] == errno.ENOTCONN: log.error("GUNICORN_FD should refer to an open socket.") else: raise # If we fail to create a socket from GUNICORN_FD # we fall through and try and open the socket # normally. for i in range(5): try: return sock_type(conf, log) except socket.error as e: if e.args[0] == errno.EADDRINUSE: log.error("Connection in use: %s", str(addr)) if e.args[0] == errno.EADDRNOTAVAIL: log.error("Invalid address: %s", str(addr)) sys.exit(1) if i < 5: log.error("Retrying in 1 second.") time.sleep(1) log.error("Can't connect to %s", str(addr)) sys.exit(1)
def test_is_ipv6(test_input, expected): assert util.is_ipv6(test_input) == expected