Skip to content

Commit

Permalink
added calls to response.close() to fix a memory leak
Browse files Browse the repository at this point in the history
  • Loading branch information
coreGreenberet committed Apr 12, 2020
1 parent f082295 commit bc2898a
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions meraki/rest_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ def request(self, metadata, method, url, **kwargs):
while retries > 0:
# Make the HTTP request to the API endpoint
try:
if response:
response.close()
response = self._req_session.request(method, abs_url, allow_redirects=False, **kwargs)
reason = response.reason if response.reason else ''
status = response.status_code
Expand Down Expand Up @@ -190,7 +192,12 @@ def get(self, metadata, url, params=None):
metadata['url'] = url
metadata['params'] = params
response = self.request(metadata, 'GET', url, params=params)
return response.json() if response and response.text.strip() else None
ret = None
if response:
if response.text.strip():
ret = response.json()
response.close()
return ret

def get_pages(self, metadata, url, params=None, total_pages=-1, direction='next'):
if type(total_pages) == str and total_pages.lower() == 'all':
Expand All @@ -217,6 +224,9 @@ def get_pages(self, metadata, url, params=None, total_pages=-1, direction='next'
elif 'rel=last' in l:
last = l[l.find('<')+1:l.find('>')]

response.close()
response = None

# GET the subsequent page
if direction == 'next' and next:
metadata['page'] += 1
Expand All @@ -243,24 +253,39 @@ def get_pages(self, metadata, url, params=None, total_pages=-1, direction='next'

total_pages -= 1

if response:
response.close()

return results

def post(self, metadata, url, json=None):
metadata['method'] = 'POST'
metadata['url'] = url
metadata['json'] = json
response = self.request(metadata, 'POST', url, json=json)
return response.json() if response and response.text.strip() else None
ret = None
if response:
if response.text.strip():
ret = response.json()
response.close()
return ret

def put(self, metadata, url, json=None):
metadata['method'] = 'PUT'
metadata['url'] = url
metadata['json'] = json
response = self.request(metadata, 'PUT', url, json=json)
return response.json() if response and response.text.strip() else None
ret = None
if response:
if response.text.strip():
ret = response.json()
response.close()
return ret

def delete(self, metadata, url):
metadata['method'] = 'DELETE'
metadata['url'] = url
self.request(metadata, 'DELETE', url)
response = self.request(metadata, 'DELETE', url)
if response:
response.close()
return None

0 comments on commit bc2898a

Please sign in to comment.