Commit 745c1b15 authored by Jim Fulton's avatar Jim Fulton

Use newer asyncio to connect accepted sockets (if available).

The new api will be in Python 3.6, and hopefullt, in uvloop soon.

When binding to port 0, make sure we set our address to a 2-tuple, because
IPV6 4-tuples confuse ClientStorage.
parent 3c525909
...@@ -51,6 +51,7 @@ else: ...@@ -51,6 +51,7 @@ else:
import asyncore import asyncore
import socket import socket
import threading import threading
import time
from .server import ServerProtocol from .server import ServerProtocol
...@@ -130,7 +131,7 @@ class Acceptor(asyncore.dispatcher): ...@@ -130,7 +131,7 @@ class Acceptor(asyncore.dispatcher):
break break
if isinstance(addr, tuple) and addr[1] == 0: if isinstance(addr, tuple) and addr[1] == 0:
self.addr = addr = self.socket.getsockname() self.addr = addr = self.socket.getsockname()[:2]
logger.info("listening on %s", str(addr)) logger.info("listening on %s", str(addr))
self.listen(5) self.listen(5)
...@@ -176,6 +177,10 @@ class Acceptor(asyncore.dispatcher): ...@@ -176,6 +177,10 @@ class Acceptor(asyncore.dispatcher):
if self.ssl_context is None: if self.ssl_context is None:
cr = loop.create_connection((lambda : protocol), sock=sock) cr = loop.create_connection((lambda : protocol), sock=sock)
else:
if hasattr(loop, 'connect_accepted_socket'):
loop.connect_accepted_socket(
(lambda : protocol), sock, ssl=self.ssl_context)
else: else:
####################################################### #######################################################
# XXX See http://bugs.python.org/issue27392 :( # XXX See http://bugs.python.org/issue27392 :(
...@@ -189,7 +194,7 @@ class Acceptor(asyncore.dispatcher): ...@@ -189,7 +194,7 @@ class Acceptor(asyncore.dispatcher):
cr = loop.create_connection( cr = loop.create_connection(
(lambda : protocol), sock=sock, (lambda : protocol), sock=sock,
ssl=self.ssl_context, ssl=self.ssl_context,
server_hostname='fu' # http://bugs.python.org/issue27391 server_hostname=''
) )
asyncio.async(cr, loop=loop) asyncio.async(cr, loop=loop)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment