From 872d56213e9d99709ec768cc842c29a89e66752d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 22 Dec 2025 09:06:53 +0000 Subject: [PATCH] Checkpoint before follow-up message Co-authored-by: mathieumoran1 --- .../__pycache__/server.cpython-312.pyc | Bin 14907 -> 15555 bytes python_video_server/server.py | 15 +++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/python_video_server/__pycache__/server.cpython-312.pyc b/python_video_server/__pycache__/server.cpython-312.pyc index a0f8ad139d09e71732d6e8f06f5a680c81a137ae..f5a9b6b23df2b07db7948c4440f24f208594d09f 100644 GIT binary patch delta 2344 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 diff --git a/python_video_server/server.py b/python_video_server/server.py index a57016c..fee364f 100644 --- a/python_video_server/server.py +++ b/python_video_server/server.py @@ -1,6 +1,7 @@ import mimetypes import os import posixpath +import ssl from functools import lru_cache from datetime import datetime, timezone from pathlib import Path @@ -172,6 +173,19 @@ def _mongo_client() -> MongoClient: # If certifi isn't available, fall back to system trust. pass + # Some hosts / middleboxes break TLS 1.3 handshakes to Atlas and produce + # `TLSV1_ALERT_INTERNAL_ERROR`. Forcing TLS 1.2 can fix it. + if _env_str("MONGO_TLS_FORCE_TLS12", "0") in ("1", "true", "yes", "on"): + cafile = kwargs.pop("tlsCAFile", None) + ctx = ssl.create_default_context(cafile=cafile) + try: + ctx.minimum_version = ssl.TLSVersion.TLSv1_2 + ctx.maximum_version = ssl.TLSVersion.TLSv1_2 + except Exception: + # Older Python/OpenSSL may not support TLSVersion fields. + pass + kwargs["ssl_context"] = ctx + # Optional escape hatch (NOT recommended): allow invalid certs for debugging only. if _env_str("MONGO_TLS_INSECURE", "0") in ("1", "true", "yes", "on"): kwargs["tlsAllowInvalidCertificates"] = True @@ -337,6 +351,7 @@ def healthz(): "time": datetime.now(timezone.utc).isoformat(), "video_files_dir": str(_video_files_dir()), "mongo_db_name": _mongo_db_name() or None, + "openssl": ssl.OPENSSL_VERSION, }