Selaa lähdekoodia

Merge pull request #3203 from ThomasWaldmann/fix-4args-open-1.1

fix server-side IndexError for 4-arg open() of old clients, fixes #3192
TW 7 vuotta sitten
vanhempi
sitoutus
cb7a6252a3
1 muutettua tiedostoa jossa 9 lisäystä ja 1 poistoa
  1. 9 1
      src/borg/remote.py

+ 9 - 1
src/borg/remote.py

@@ -180,7 +180,15 @@ class RepositoryServer:  # pragma: no cover
 
 
     def positional_to_named(self, method, argv):
     def positional_to_named(self, method, argv):
         """Translate from positional protocol to named protocol."""
         """Translate from positional protocol to named protocol."""
-        return {name: argv[pos] for pos, name in enumerate(compatMap[method])}
+        try:
+            return {name: argv[pos] for pos, name in enumerate(compatMap[method])}
+        except IndexError:
+            if method == 'open' and len(argv) == 4:
+                # borg clients < 1.0.7 use open() with 4 args
+                mapping = compatMap[method][:4]
+            else:
+                raise
+            return {name: argv[pos] for pos, name in enumerate(mapping)}
 
 
     def filter_args(self, f, kwargs):
     def filter_args(self, f, kwargs):
         """Remove unknown named parameters from call, because client did (implicitly) say it's ok."""
         """Remove unknown named parameters from call, because client did (implicitly) say it's ok."""