浏览代码

use handlers without affecting the global state

Dov Feldstern 11 年之前
父节点
当前提交
e7414437cb
共有 1 个文件被更改,包括 3 次插入4 次删除
  1. 3 4
      dulwich/client.py

+ 3 - 4
dulwich/client.py

@@ -905,10 +905,9 @@ class HttpGitClient(GitClient):
 
     def _http_request(self, url, headers={}, data=None):
         opener = urllib2.build_opener(*self.handlers)
-        urllib2.install_opener(opener)
         req = urllib2.Request(url, headers=headers, data=data)
         try:
-            resp = self._perform(req)
+            resp = self._perform(opener, req)
         except urllib2.HTTPError as e:
             if e.code == 404:
                 raise NotGitRepository()
@@ -916,7 +915,7 @@ class HttpGitClient(GitClient):
                 raise GitProtocolError("unexpected http response %d" % e.code)
         return resp
 
-    def _perform(self, req):
+    def _perform(self, opener, req):
         """Perform a HTTP request.
 
         This is provided so subclasses can provide their own version.
@@ -924,7 +923,7 @@ class HttpGitClient(GitClient):
         :param req: urllib2.Request instance
         :return: matching response
         """
-        return urllib2.urlopen(req)
+        return opener.open(req)
 
     def _discover_references(self, service, url):
         assert url[-1] == "/"