diff --git a/plugins/Bigfile/BigfilePlugin.py b/plugins/Bigfile/BigfilePlugin.py index 5b4520ff..9505a1de 100644 --- a/plugins/Bigfile/BigfilePlugin.py +++ b/plugins/Bigfile/BigfilePlugin.py @@ -426,7 +426,7 @@ class BigFile(object): def read(self, buff=64 * 1024): pos = self.f.tell() - read_until = pos + buff + read_until = min(self.size, pos + buff) requests = [] # Request all required blocks while 1: diff --git a/plugins/Bigfile/Test/TestBigfile.py b/plugins/Bigfile/Test/TestBigfile.py index a934a67c..e3e58cf2 100644 --- a/plugins/Bigfile/Test/TestBigfile.py +++ b/plugins/Bigfile/Test/TestBigfile.py @@ -209,6 +209,16 @@ class TestBigfile: assert len(requests) == 2 # Two block download + # Test out of range request + f.seek(5 * 1024 * 1024) + data = f.read(1024 * 1024 * 30) + assert len(data) == 10 * 1000 * 1000 - (5 * 1024 * 1024) + + f.seek(30 * 1024 * 1024) + data = f.read(1024 * 1024 * 30) + assert len(data) == 0 + + @pytest.mark.parametrize("piecefield_obj", [BigfilePiecefield, BigfilePiecefieldPacked]) def testPiecefield(self, piecefield_obj, site): diff --git a/src/Config.py b/src/Config.py index 8a8ea90e..06e70486 100644 --- a/src/Config.py +++ b/src/Config.py @@ -10,7 +10,7 @@ class Config(object): def __init__(self, argv): self.version = "0.6.1" - self.rev = 3224 + self.rev = 3225 self.argv = argv self.action = None self.config_file = "zeronet.conf"