Explorar el Código

Take copy of refs when invoking determine_wants callback.

This avoids breakage if the callback happens to change the value that was
passed in.

Signed-Off-By: Jelmer Vernooij <jelmer@samba.org>
Andi McClure hace 12 años
padre
commit
3b02a912ad
Se han modificado 1 ficheros con 2 adiciones y 2 borrados
  1. 2 2
      dulwich/client.py

+ 2 - 2
dulwich/client.py

@@ -440,7 +440,7 @@ class TraditionalGitClient(GitClient):
         old_refs, server_capabilities = self._read_refs(proto)
         old_refs, server_capabilities = self._read_refs(proto)
         negotiated_capabilities = self._send_capabilities & server_capabilities
         negotiated_capabilities = self._send_capabilities & server_capabilities
         try:
         try:
-            new_refs = determine_wants(old_refs)
+            new_refs = determine_wants(dict(old_refs))
         except:
         except:
             proto.write_pkt_line(None)
             proto.write_pkt_line(None)
             raise
             raise
@@ -707,7 +707,7 @@ class HttpGitClient(GitClient):
         old_refs, server_capabilities = self._discover_references(
         old_refs, server_capabilities = self._discover_references(
             "git-receive-pack", url)
             "git-receive-pack", url)
         negotiated_capabilities = self._send_capabilities & server_capabilities
         negotiated_capabilities = self._send_capabilities & server_capabilities
-        new_refs = determine_wants(old_refs)
+        new_refs = determine_wants(dict(old_refs))
         if new_refs is None:
         if new_refs is None:
             return old_refs
             return old_refs
         if self.dumb:
         if self.dumb: