Skip to content

Commit 1b56f33

Browse files
authored
Merge pull request #133 from RachelTucker/3_5_x_fix_buffer_overflow
Making buffer size specifiable in get object command
2 parents c06a350 + d6b7042 commit 1b56f33

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

ds3/ds3.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7819,15 +7819,19 @@ def process_response(self, response):
78197819

78207820

78217821
class GetObjectResponse(AbstractResponse):
7822+
7823+
def __init__(self, response, request, buffer_size=None):
7824+
self.buffer_size = buffer_size
7825+
super(self.__class__, self).__init__(response, request)
78227826

78237827
def process_response(self, response):
78247828
self.__check_status_codes__([200, 206])
78257829
stream = self.request.stream
78267830
try:
7827-
bytes_read = response.read()
7831+
bytes_read = response.read(self.buffer_size)
78287832
while bytes_read:
78297833
stream.write(bytes_read)
7830-
bytes_read = response.read()
7834+
bytes_read = response.read(self.buffer_size)
78317835
finally:
78327836
stream.close()
78337837
response.close()
@@ -11062,10 +11066,10 @@ def get_service(self, request):
1106211066
raise TypeError('request for get_service should be of type GetServiceRequest but was ' + request.__class__.__name__)
1106311067
return GetServiceResponse(self.net_client.get_response(request), request)
1106411068

11065-
def get_object(self, request):
11069+
def get_object(self, request, buffer_size=1048576):
1106611070
if not isinstance(request, GetObjectRequest):
1106711071
raise TypeError('request for get_object should be of type GetObjectRequest but was ' + request.__class__.__name__)
11068-
return GetObjectResponse(self.net_client.get_response(request), request)
11072+
return GetObjectResponse(self.net_client.get_response(request), request, buffer_size)
1106911073

1107011074
def head_bucket(self, request):
1107111075
if not isinstance(request, HeadBucketRequest):

0 commit comments

Comments
 (0)