commit:     b7e89f866a9a1d73ab72670d74e2292b05893849
Author:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
AuthorDate: Wed Mar  6 04:01:27 2024 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Wed Mar  6 18:19:31 2024 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=b7e89f86

util: set a timeout for urlopen calls

A hung urlopen call can cause emerge to produce no output when fetching
binhost data.

Bug: https://bugs.gentoo.org/926221
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 lib/portage/util/_urlopen.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/portage/util/_urlopen.py b/lib/portage/util/_urlopen.py
index 22f0e08df0..d451a94a89 100644
--- a/lib/portage/util/_urlopen.py
+++ b/lib/portage/util/_urlopen.py
@@ -26,10 +26,10 @@ def have_pep_476():
     return hasattr(__import__("ssl"), "_create_unverified_context")
 
 
-def urlopen(url, if_modified_since=None, headers={}, proxies=None):
+def urlopen(url, timeout=10, if_modified_since=None, headers={}, proxies=None):
     parse_result = urllib_parse.urlparse(url)
     if parse_result.scheme not in ("http", "https"):
-        return _urlopen(url)
+        return _urlopen(url, timeout=timeout)
 
     netloc = parse_result.netloc.rpartition("@")[-1]
     url = urllib_parse.urlunparse(
@@ -59,7 +59,7 @@ def urlopen(url, if_modified_since=None, headers={}, 
proxies=None):
         handlers.append(urllib_request.ProxyHandler(proxies))
     opener = urllib_request.build_opener(*handlers)
 
-    hdl = opener.open(request)
+    hdl = opener.open(request, timeout=timeout)
     if hdl.headers.get("last-modified", ""):
         try:
             add_header = hdl.headers.add_header

Reply via email to