[projects/pld-builder.new] request_handler_server: fork per request to fix SSL handshake timeouts
arekm
arekm at pld-linux.org
Sat Apr 25 16:39:06 CEST 2026
commit 2a52f94b55a4af75287b160cb82cd71ea1e3714e
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Sat Apr 25 16:08:08 2026 +0200
request_handler_server: fork per request to fix SSL handshake timeouts
PLD_Builder/request_handler_server.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
---
diff --git a/PLD_Builder/request_handler_server.py b/PLD_Builder/request_handler_server.py
index ec75330..74b90e1 100644
--- a/PLD_Builder/request_handler_server.py
+++ b/PLD_Builder/request_handler_server.py
@@ -11,10 +11,18 @@ import os
from config import config, init_conf
from http.server import BaseHTTPRequestHandler, HTTPServer
+from socketserver import ForkingMixIn
import request_handler
import path
+class ForkingHTTPServer(ForkingMixIn, HTTPServer):
+ # Each request runs in a forked child so a slow handler (GPG verify,
+ # queue locking, SRPM processing) cannot block accept() of new clients,
+ # which surfaced on TLS as _ssl.c:1015 handshake timeouts. Forking also
+ # isolates module-level mutable state (acl.current_user, etc.).
+ pass
+
class MyHandler(BaseHTTPRequestHandler):
def do_GET(self):
@@ -93,7 +101,7 @@ def main(srv_ssl=False):
port = config.request_handler_server_ssl_port
try:
- server = HTTPServer((host, port), MyHandler)
+ server = ForkingHTTPServer((host, port), MyHandler)
if srv_ssl:
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile=config.request_handler_server_ssl_cert,
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/projects/pld-builder.new.git/commitdiff/33d0188f0225eeed4f279d76812f280f6c83a2e8
More information about the pld-cvs-commit
mailing list