@@ -142,6 +142,8 @@ def getHandle(self):
142142 self .c .setopt (pycurl .WRITEFUNCTION , self .writeBody )
143143 self .c .setopt (pycurl .HEADERFUNCTION , self .writeHeader )
144144
145+ # request one byte more, since some servers in russia seems to have a defect arihmetic unit
146+
145147 if self .resume :
146148 self .fp = open (self .p .info .getChunkName (self .id ), "ab" )
147149 self .arrived = self .fp .tell ()
@@ -150,7 +152,11 @@ def getHandle(self):
150152 #do nothing if chunk already finished
151153 if not self .arrived + self .range [0 ] - self .range [1 ]: return None
152154
153- range = "%i-%i" % (self .arrived + self .range [0 ], self .range [1 ])
155+ if self .id == len (self .p .info .chunks ) - 1 : #as last chunk dont set end range, so we get everything
156+ range = "%i-" % self .range [0 ]
157+ else :
158+ range = "%i-%i" % (self .arrived + self .range [0 ], min (self .range [1 ] + 1 , self .p .size - 1 ))
159+
154160 print "Chunked resume with range %s" % range
155161 self .c .setopt (pycurl .RANGE , range )
156162 else :
@@ -159,7 +165,11 @@ def getHandle(self):
159165
160166 else :
161167 if self .range :
162- range = "%i-%i" % self .range
168+ if self .id == len (self .p .info .chunks ) - 1 : # see above
169+ range = "%i-" % self .range [0 ]
170+ else :
171+ range = "%i-%i" % (self .range [0 ], min (self .range [1 ] + 1 , self .p .size - 1 ))
172+
163173 print "Chunked with range %s" % range
164174 self .c .setopt (pycurl .RANGE , range )
165175
0 commit comments