1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-01-01 04:37:34 +00:00

fix server-side IndexError for 4-arg open() of old clients, fixes #3192

borg 1.1(.0) server didn't support the 4 argument open() calls made
by < 1.0.7 clients.

(cherry picked from commit dbcc870489)
This commit is contained in:
Thomas Waldmann 2017-10-20 16:47:32 +02:00
parent 8304b0798a
commit 2aa676f85c

View file

@ -180,7 +180,15 @@ def __init__(self, restrict_to_paths, restrict_to_repositories, append_only, sto
def positional_to_named(self, method, argv):
"""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):
"""Remove unknown named parameters from call, because client did (implicitly) say it's ok."""