Skip to content

Commit 210c1f2

Browse files
authored
Merge pull request #132 from RachelTucker/4_0_fix_buffer_overflow
making buffer size specifiable in get object command
2 parents 561a1bc + 5c58144 commit 210c1f2

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
@@ -7951,15 +7951,19 @@ def process_response(self, response):
79517951

79527952

79537953
class GetObjectResponse(AbstractResponse):
7954+
7955+
def __init__(self, response, request, buffer_size=None):
7956+
self.buffer_size = buffer_size
7957+
super(self.__class__, self).__init__(response, request)
79547958

79557959
def process_response(self, response):
79567960
self.__check_status_codes__([200, 206])
79577961
stream = self.request.stream
79587962
try:
7959-
bytes_read = response.read()
7963+
bytes_read = response.read(self.buffer_size)
79607964
while bytes_read:
79617965
stream.write(bytes_read)
7962-
bytes_read = response.read()
7966+
bytes_read = response.read(self.buffer_size)
79637967
finally:
79647968
stream.close()
79657969
response.close()
@@ -11246,10 +11250,10 @@ def get_service(self, request):
1124611250
raise TypeError('request for get_service should be of type GetServiceRequest but was ' + request.__class__.__name__)
1124711251
return GetServiceResponse(self.net_client.get_response(request), request)
1124811252

11249-
def get_object(self, request):
11253+
def get_object(self, request, buffer_size=1048576):
1125011254
if not isinstance(request, GetObjectRequest):
1125111255
raise TypeError('request for get_object should be of type GetObjectRequest but was ' + request.__class__.__name__)
11252-
return GetObjectResponse(self.net_client.get_response(request), request)
11256+
return GetObjectResponse(self.net_client.get_response(request), request, buffer_size)
1125311257

1125411258
def head_bucket(self, request):
1125511259
if not isinstance(request, HeadBucketRequest):

0 commit comments

Comments
 (0)