Skip to content

Commit 3fb9f90

Browse files
committed
Rev3225, Handle correctly and test out of range bigfile requests
1 parent 9c4093d commit 3fb9f90

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

plugins/Bigfile/BigfilePlugin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ def __init__(self, site, inner_path, prebuffer=0):
426426

427427
def read(self, buff=64 * 1024):
428428
pos = self.f.tell()
429-
read_until = pos + buff
429+
read_until = min(self.size, pos + buff)
430430
requests = []
431431
# Request all required blocks
432432
while 1:

plugins/Bigfile/Test/TestBigfile.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,16 @@ def testOpenBigfile(self, file_server, site, site_temp):
209209

210210
assert len(requests) == 2 # Two block download
211211

212+
# Test out of range request
213+
f.seek(5 * 1024 * 1024)
214+
data = f.read(1024 * 1024 * 30)
215+
assert len(data) == 10 * 1000 * 1000 - (5 * 1024 * 1024)
216+
217+
f.seek(30 * 1024 * 1024)
218+
data = f.read(1024 * 1024 * 30)
219+
assert len(data) == 0
220+
221+
212222

213223
@pytest.mark.parametrize("piecefield_obj", [BigfilePiecefield, BigfilePiecefieldPacked])
214224
def testPiecefield(self, piecefield_obj, site):

src/Config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Config(object):
1010

1111
def __init__(self, argv):
1212
self.version = "0.6.1"
13-
self.rev = 3224
13+
self.rev = 3225
1414
self.argv = argv
1515
self.action = None
1616
self.config_file = "zeronet.conf"

0 commit comments

Comments
 (0)