Pārlūkot izejas kodu

Properly abort connections when the determine_wants function
raises an exception.

Jelmer Vernooij 13 gadi atpakaļ
vecāks
revīzija
c986b79cb2
2 mainītis faili ar 13 papildinājumiem un 2 dzēšanām
  1. 3 0
      NEWS
  2. 10 2
      dulwich/client.py

+ 3 - 0
NEWS

@@ -12,6 +12,9 @@
 
   * Fix use --bare argument to 'dulwich init'. (Chris Eberle)
 
+  * Properly abort connections when the determine_wants function
+    raises an exception. (Jelmer Vernooij, #856769)
+
  FEATURES
 
   * Add support for retrieving tarballs from remote servers.

+ 10 - 2
dulwich/client.py

@@ -419,7 +419,11 @@ class TraditionalGitClient(GitClient):
         negotiated_capabilities = list(self._send_capabilities)
         if 'report-status' not in server_capabilities:
             negotiated_capabilities.remove('report-status')
-        new_refs = determine_wants(old_refs)
+        try:
+            new_refs = determine_wants(old_refs)
+        except:
+            proto.write_pkt_line(None)
+            raise
         if new_refs is None:
             proto.write_pkt_line(None)
             return old_refs
@@ -446,7 +450,11 @@ class TraditionalGitClient(GitClient):
         proto, can_read = self._connect('upload-pack', path)
         (refs, server_capabilities) = self._read_refs(proto)
         negotiated_capabilities = list(self._fetch_capabilities)
-        wants = determine_wants(refs)
+        try:
+            wants = determine_wants(refs)
+        except:
+            proto.write_pkt_line(None)
+            raise
         if not wants:
             proto.write_pkt_line(None)
             return refs