From 5767fb4ab108dddb07fc839a3b0f4d323a7c4bea Mon Sep 17 00:00:00 2001 From: coletdjnz Date: Sat, 8 Nov 2025 18:30:43 +1300 Subject: [PATCH] [networking] Ensure underlying file object is closed when fully read (#14935) Fixes https://github.com/yt-dlp/yt-dlp/issues/14891 Authored by: coletdjnz --- test/test_networking.py | 84 ++++++++++++++++++++++++++++++++-- yt_dlp/networking/_curlcffi.py | 5 +- yt_dlp/networking/_requests.py | 23 ++++++---- yt_dlp/networking/_urllib.py | 20 +++++++- yt_dlp/networking/common.py | 8 +++- 5 files changed, 124 insertions(+), 16 deletions(-) diff --git a/test/test_networking.py b/test/test_networking.py index afdd0c7aa7..e972f597b5 100644 --- a/test/test_networking.py +++ b/test/test_networking.py @@ -3,6 +3,7 @@ # Allow direct execution import os import sys +from unittest.mock import MagicMock import pytest @@ -614,8 +615,11 @@ class TestHTTPRequestHandler(TestRequestHandlerBase): @pytest.mark.skip_handler('CurlCFFI', 'not supported by curl-cffi') def test_gzip_trailing_garbage(self, handler): with handler() as rh: - data = validate_and_send(rh, Request(f'http://localhost:{self.http_port}/trailing_garbage')).read().decode() + res = validate_and_send(rh, Request(f'http://localhost:{self.http_port}/trailing_garbage')) + data = res.read().decode() assert data == '