]> granicus.if.org Git - python/commitdiff
asyncio: Add "call_connection_made" arg to SSLProtocol.__init__
authorYury Selivanov <yury@magic.io>
Wed, 5 Oct 2016 23:39:54 +0000 (19:39 -0400)
committerYury Selivanov <yury@magic.io>
Wed, 5 Oct 2016 23:39:54 +0000 (19:39 -0400)
Issue #23749: With this change it's possible to implement starttls
as a separate package on PyPI, or even by copying/pasting a small
snipped of code in your project.

It's expected that we'll figure out the API design for starttls
during 3.6, so that we can add it in 3.7.

Lib/asyncio/sslproto.py

index afe85a143870c264e4a2fa4a8b33f4de87d9dacb..804c5c30f136ba4a928ac4416c3ca9acbabab19b 100644 (file)
@@ -410,7 +410,8 @@ class SSLProtocol(protocols.Protocol):
     """
 
     def __init__(self, loop, app_protocol, sslcontext, waiter,
-                 server_side=False, server_hostname=None):
+                 server_side=False, server_hostname=None,
+                 call_connection_made=True):
         if ssl is None:
             raise RuntimeError('stdlib ssl module not available')
 
@@ -443,6 +444,7 @@ class SSLProtocol(protocols.Protocol):
         self._in_shutdown = False
         # transport, ex: SelectorSocketTransport
         self._transport = None
+        self._call_connection_made = call_connection_made
 
     def _wakeup_waiter(self, exc=None):
         if self._waiter is None:
@@ -606,7 +608,8 @@ class SSLProtocol(protocols.Protocol):
                            compression=sslobj.compression(),
                            ssl_object=sslobj,
                            )
-        self._app_protocol.connection_made(self._app_transport)
+        if self._call_connection_made:
+            self._app_protocol.connection_made(self._app_transport)
         self._wakeup_waiter()
         self._session_established = True
         # In case transport.write() was already called. Don't call