From 76d7f8de061d0287f1221732afc4c46accc2842b Mon Sep 17 00:00:00 2001 From: Wes Young Date: Sat, 2 Mar 2019 09:58:15 -0500 Subject: [PATCH] problem: IOLoop leaks FDs in fireball mode --- cif/httpd/__init__.py | 5 +++-- cif/httpd/views/indicators.py | 11 ++++++++--- cif/httpd/views/ping.py | 3 ++- dev_requirements.txt | 4 ++-- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/cif/httpd/__init__.py b/cif/httpd/__init__.py index 054a8e59..35d9f0f1 100644 --- a/cif/httpd/__init__.py +++ b/cif/httpd/__init__.py @@ -219,8 +219,9 @@ def login(): if request.form['token'] == '': return render_template('login.html') - c = Client(remote, HTTPD_TOKEN) - rv = c.tokens_search({'token': request.form['token']}) + with Client(remote, HTTPD_TOKEN) as cli: + rv = cli.tokens_search({'token': request.form['token']}) + if len(rv) == 0: return render_template('login.html', code=401) diff --git a/cif/httpd/views/indicators.py b/cif/httpd/views/indicators.py index dd2c09dc..20db1544 100644 --- a/cif/httpd/views/indicators.py +++ b/cif/httpd/views/indicators.py @@ -34,7 +34,9 @@ def get(self): return jsonify_success(r) try: - r = Client(remote, pull_token()).indicators_search(filters, decode=False) + with Client(remote, pull_token()) as cli: + r = cli.indicators_search(filters, decode=False) + except RuntimeError as e: logger.error(e) return jsonify_unknown(msg='search failed') @@ -68,7 +70,9 @@ def post(self): logger.info('fireball mode') fireball = True try: - r = Client(remote, pull_token()).indicators_create(request.data, nowait=nowait, fireball=fireball) + with Client(remote, pull_token()) as cli: + r = cli.indicators_create(request.data, nowait=nowait, + fireball=fireball) if nowait: r = 'pending' @@ -99,7 +103,8 @@ def post(self): def delete(self): try: data = request.data.decode('utf-8') - r = Client(remote, pull_token()).indicators_delete(data) + with Client(remote, pull_token()) as cli: + r = cli.indicators_delete(data) except RuntimeError as e: logger.error(e) diff --git a/cif/httpd/views/ping.py b/cif/httpd/views/ping.py index 1751c82f..415c066c 100644 --- a/cif/httpd/views/ping.py +++ b/cif/httpd/views/ping.py @@ -21,7 +21,8 @@ def get(self): return jsonify_success(r) try: - r = Client(remote, pull_token()).ping(write=write) + with Client(remote, pull_token()) as cli: + r = cli.ping(write=write) except TimeoutError: return jsonify_unknown(msg='timeout', code=408) diff --git a/dev_requirements.txt b/dev_requirements.txt index 335d86b1..57463a8a 100644 --- a/dev_requirements.txt +++ b/dev_requirements.txt @@ -1,4 +1,4 @@ coverage>=4.2 -pytest-cov>=2.2.1,<2.6.1 -pytest>=2.8.0,<3.0 +pytest-cov>=2.6 +pytest>=4.2 -r requirements.txt