Skip to content

Commit 966412b

Browse files
authored
Merge pull request #131 from RachelTucker/5_0_fix_buffer_overflow
Making buffer size specifiable in get object command
2 parents 96c6ee1 + 860be87 commit 966412b

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

80208020

80218021
class GetObjectResponse(AbstractResponse):
8022+
8023+
def __init__(self, response, request, buffer_size=None):
8024+
self.buffer_size = buffer_size
8025+
super(self.__class__, self).__init__(response, request)
80228026

80238027
def process_response(self, response):
80248028
self.__check_status_codes__([200, 206])
80258029
stream = self.request.stream
80268030
try:
8027-
bytes_read = response.read()
8031+
bytes_read = response.read(self.buffer_size)
80288032
while bytes_read:
80298033
stream.write(bytes_read)
8030-
bytes_read = response.read()
8034+
bytes_read = response.read(self.buffer_size)
80318035
finally:
80328036
stream.close()
80338037
response.close()
@@ -11336,10 +11340,10 @@ def get_service(self, request):
1133611340
raise TypeError('request for get_service should be of type GetServiceRequest but was ' + request.__class__.__name__)
1133711341
return GetServiceResponse(self.net_client.get_response(request), request)
1133811342

11339-
def get_object(self, request):
11343+
def get_object(self, request, buffer_size=1048576):
1134011344
if not isinstance(request, GetObjectRequest):
1134111345
raise TypeError('request for get_object should be of type GetObjectRequest but was ' + request.__class__.__name__)
11342-
return GetObjectResponse(self.net_client.get_response(request), request)
11346+
return GetObjectResponse(self.net_client.get_response(request), request, buffer_size)
1134311347

1134411348
def head_bucket(self, request):
1134511349
if not isinstance(request, HeadBucketRequest):

0 commit comments

Comments
 (0)