Skip to content

Commit e8b0eea

Browse files
committed
version 20240929.1, faster ssl single context load
1 parent d6cda2d commit e8b0eea

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

Makefile

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ venv:
33
python3 -m venv venv
44
test: venv
55
venv/bin/pip install -U requests
6-
venv/bin/python -m unittest tests
6+
venv/bin/pip install -U pytest
7+
venv/bin/python -m pytest
78
build:
89
python3 -m pip install --upgrade build
910
python3 -m pip install --upgrade twine

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "rocket3"
3-
version = "20240915.1"
3+
version = "20240929.1"
44
authors = [{ name="Massimo Di Pierro", email="[email protected]" },]
55
description = "A multi-threaded WSGI compiliant and secure web server"
66
readme = "README.md"

rocket3/__init__.py

+11-8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
except ImportError:
3838
has_ssl = False
3939

40+
__vesrion__ = "20240929.1"
4041

4142
__all__ = [
4243
"__version__",
@@ -389,8 +390,17 @@ def __init__(self, interface, queue_size, active_queue, *args, **kwargs):
389390
self.addr = interface[0]
390391
self.port = interface[1]
391392
self.secure = len(interface) >= 4
392-
self.context = None
393393
self.clientcert_req = len(interface) == 5 and interface[4]
394+
if not self.secure:
395+
self.context = None
396+
else:
397+
self.context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
398+
self.context.load_cert_chain(
399+
keyfile=self.interface[2], certfile=self.interface[3]
400+
)
401+
if self.clientcert_req:
402+
self.context.load_verify_locations(self.interface[4])
403+
self.context.verify_model = ssl.CERT_OPTIONAL
394404

395405
self.thread = None
396406
self.ready = False
@@ -466,13 +476,6 @@ def __init__(self, interface, queue_size, active_queue, *args, **kwargs):
466476
self.ready = True
467477

468478
def wrap_socket(self, sock):
469-
self.context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
470-
self.context.load_cert_chain(
471-
keyfile=self.interface[2], certfile=self.interface[3]
472-
)
473-
if self.clientcert_req:
474-
self.context.load_verify_locations(self.interface[4])
475-
self.context.verify_model = ssl.CERT_OPTIONAL
476479
ssl_sock = self.context.wrap_socket(
477480
sock, do_handshake_on_connect=False, server_side=True
478481
)

tests/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-

0 commit comments

Comments
 (0)