From c744288f94e7b5a65abe447d672e3b875ff5482c Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Tue, 4 Sep 2012 12:33:38 +0200 Subject: [PATCH] Add a flags= option to netutil.bind_sockets --- tornado/netutil.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) 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 -- 2.47.2