浏览代码

Merge pull request #1261 from nanonyme/protocolerror

Wrap all urllib3 read ProtocolErrors as GitProtocolError
Jelmer Vernooij 1 年之前
父节点
当前提交
b6766453ab
共有 1 个文件被更改,包括 12 次插入1 次删除
  1. 12 1
      dulwich/client.py

+ 12 - 1
dulwich/client.py

@@ -2224,6 +2224,17 @@ class AbstractHttpGitClient(GitClient):
         return f"{type(self).__name__}({self._base_url!r}, dumb={self.dumb!r})"
 
 
+def _wrap_urllib3_exceptions(func):
+
+    def wrapper(*args, **kwargs):
+        try:
+            return func(*args, **kwargs)
+        except urllib3.exceptions.ProtocolError as error:
+            raise GitProtocolError(str(error)) from error
+
+    return wrapper
+
+
 class Urllib3HttpGitClient(AbstractHttpGitClient):
     def __init__(
         self,
@@ -2303,7 +2314,7 @@ class Urllib3HttpGitClient(AbstractHttpGitClient):
             resp.redirect_location = resp.get_redirect_location()
         else:
             resp.redirect_location = resp_url if resp_url != url else ""
-        return resp, resp.read
+        return resp, _wrap_urllib3_exceptions(resp.read)
 
 
 HttpGitClient = Urllib3HttpGitClient