From 8c93b9a015dbce76047d343701329200c12bb260 Mon Sep 17 00:00:00 2001 From: Klemek Date: Wed, 6 May 2026 09:36:31 +0200 Subject: [PATCH] fix: dont log BrokenPipeError and ConnectionResetError --- stapler/handlers.py | 2 ++ tests/test_handlers.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/stapler/handlers.py b/stapler/handlers.py index f560539..6fba66e 100644 --- a/stapler/handlers.py +++ b/stapler/handlers.py @@ -300,6 +300,8 @@ class RequestHandler(http.server.SimpleHTTPRequestHandler, BaseHandler): self.__target_spa: str | None = None try: super().__init__(*args, directory=params.data_dir, **kwargs, params=params) # ty:ignore[unknown-argument] + except (BrokenPipeError, ConnectionResetError) as e: + self.logger.error("Connection lost: %s", str(e)) # noqa: TRY400 except: self.logger.exception("Could not handle request") diff --git a/tests/test_handlers.py b/tests/test_handlers.py index b7596ce..32ab123 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -177,6 +177,21 @@ class TestRequestHandler(BaseHandlerTestCase): token_manager=self.token_manager, ) + def test_handle_disconnect_silently(self) -> None: + with self.patch("http.server.BaseHTTPRequestHandler.__init__") as mock: + mock.side_effect = BrokenPipeError + logging.basicConfig(level=logging.CRITICAL) + RequestHandler( + unittest.mock.MagicMock(), + "127.0.0.1", + unittest.mock.MagicMock(), + params=Parameters( + data_dir=self.get_tmp_dir(), certbot_www=str(self.certbot_www) + ), + registry=self.registry, + token_manager=self.token_manager, + ) + def test_do_head_forward(self) -> None: handler = self._get_handler() with (