From: Philipp Hagemeister Date: Tue, 4 Sep 2012 10:33:38 +0000 (+0200) Subject: Add a flags= option to netutil.bind_sockets X-Git-Tag: v3.0.0~272^2~28^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c744288f94e7b5a65abe447d672e3b875ff5482c;p=thirdparty%2Ftornado.git Add a flags= option to netutil.bind_sockets --- diff --git a/tornado/netutil.py b/tornado/netutil.py index ba0b27d25..6c5a0a937 100644 --- a/tornado/netutil.py +++ b/tornado/netutil.py @@ -237,7 +237,7 @@ class TCPServer(object): logging.error("Error in connection callback", exc_info=True) -def bind_sockets(port, address=None, family=socket.AF_UNSPEC, backlog=128): +def bind_sockets(port, address=None, family=socket.AF_UNSPEC, backlog=128, flags=None): """Creates listening sockets bound to the given port and address. Returns a list of socket objects (multiple sockets are returned if @@ -253,17 +253,20 @@ def bind_sockets(port, address=None, family=socket.AF_UNSPEC, backlog=128): The ``backlog`` argument has the same meaning as for ``socket.listen()``. + + ``flags`` is a bitmask of AI_* flags to ``getaddrinfo``. """ sockets = [] if address == "": address = None - flags = socket.AI_PASSIVE - if hasattr(socket, "AI_ADDRCONFIG"): - # AI_ADDRCONFIG ensures that we only try to bind on ipv6 - # if the system is configured for it, but the flag doesn't - # exist on some platforms (specifically WinXP, although - # newer versions of windows have it) - flags |= socket.AI_ADDRCONFIG + if flags is None: + flags = socket.AI_PASSIVE + if hasattr(socket, "AI_ADDRCONFIG"): + # AI_ADDRCONFIG ensures that we only try to bind on ipv6 + # if the system is configured for it, but the flag doesn't + # exist on some platforms (specifically WinXP, although + # newer versions of windows have it) + flags |= socket.AI_ADDRCONFIG for res in set(socket.getaddrinfo(address, port, family, socket.SOCK_STREAM, 0, flags)): af, socktype, proto, canonname, sockaddr = res