Skip to content

Commit b93ab65

Browse files
committed
separate _from_server_socket into two high level steps
1 parent b73a0a0 commit b93ab65

3 files changed

Lines changed: 476 additions & 5 deletions

File tree

cheroot/connections.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -385,28 +385,37 @@ def _configure_socket(self, s):
385385
if hasattr(s, 'settimeout'):
386386
s.settimeout(self.server.timeout)
387387

388-
def _from_server_socket(self, server_socket):
389-
# Accept the raw connection
388+
def _prepare_socket(self, server_socket):
389+
"""Handle physical accept and TLS negotiation."""
390390
result = self._accept_conn(server_socket)
391391
if result is None:
392-
return None
392+
return None, None, None, None
393393
s, addr = result
394394

395395
self._configure_socket(s)
396396

397-
# Handle TLS wrap if applicable
398397
mf = MakeFile
399398
ssl_env = {}
399+
400400
if self.server.ssl_adapter is not None:
401401
s, ssl_env = self._wrap_socket_for_tls(s, addr)
402402
if not s:
403-
return None
403+
return None, None, None, None
404404

405405
mf = self.server.ssl_adapter.makefile
406406
# Re-apply our timeout since we may have a new socket object
407407
if hasattr(s, 'settimeout'):
408408
s.settimeout(self.server.timeout)
409409

410+
return s, addr, mf, ssl_env
411+
412+
def _from_server_socket(self, server_socket):
413+
"""Orchestrate the creation of a connection from a server socket."""
414+
# Handle the connection acceptance and the TLS wrapping if applicable
415+
s, addr, mf, ssl_env = self._prepare_socket(server_socket)
416+
if s is None:
417+
return None
418+
410419
# Initialize the Connection object
411420
conn = self.server.ConnectionClass(self.server, s, mf)
412421
conn.ssl_env = ssl_env

0 commit comments

Comments
 (0)