diff options
-rw-r--r-- | changes/feature-4308-pin-requests-dep | 1 | ||||
-rw-r--r-- | pkg/requirements.pip | 2 | ||||
-rw-r--r-- | src/leap/bitmask/crypto/srpauth.py | 7 | ||||
-rw-r--r-- | src/leap/bitmask/util/compat.py | 31 |
4 files changed, 39 insertions, 2 deletions
diff --git a/changes/feature-4308-pin-requests-dep b/changes/feature-4308-pin-requests-dep new file mode 100644 index 00000000..1f7af6ca --- /dev/null +++ b/changes/feature-4308-pin-requests-dep @@ -0,0 +1 @@ +- Add support for requests 1.1.0 (raring). Closes: #4308 diff --git a/pkg/requirements.pip b/pkg/requirements.pip index 98610fbb..29a313ea 100644 --- a/pkg/requirements.pip +++ b/pkg/requirements.pip @@ -6,7 +6,7 @@ # Use LEAP_VENV_SKIP_PYSIDE to avoid installing it! argparse -requests +requests>=1.1.0 srp>=1.0.2 pyopenssl python-dateutil diff --git a/src/leap/bitmask/crypto/srpauth.py b/src/leap/bitmask/crypto/srpauth.py index 47ed21b0..e7998e62 100644 --- a/src/leap/bitmask/crypto/srpauth.py +++ b/src/leap/bitmask/crypto/srpauth.py @@ -31,6 +31,7 @@ from PySide import QtCore from twisted.internet import threads from leap.bitmask.util import request_helpers as reqhelper +from leap.bitmask.util.compat import requests_has_max_retries from leap.bitmask.util.constants import REQUEST_TIMEOUT from leap.common.check import leap_assert from leap.common.events import signal as events_signal @@ -184,7 +185,11 @@ class SRPAuth(QtCore.QObject): # NOTE: This is a workaround for the moment, the server # side seems to return correctly every time, but it fails # on the client end. - self._session.mount('https://', HTTPAdapter(max_retries=30)) + if requests_has_max_retries: + adapter = HTTPAdapter(max_retries=30) + else: + adapter = HTTPAdapter() + self._session.mount('https://', adapter) def _safe_unhexlify(self, val): """ diff --git a/src/leap/bitmask/util/compat.py b/src/leap/bitmask/util/compat.py new file mode 100644 index 00000000..e34b9ead --- /dev/null +++ b/src/leap/bitmask/util/compat.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# compat.py +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +""" +Utilities for dealing with compat versions. +""" +from distutils.version import LooseVersion as V + +from requests import __version__ as _requests_version + + +def _requests_has_max_retries(): + """ + Returns True if we can use the max_retries parameter + """ + return V(_requests_version) > V('1.1.0') + +requests_has_max_retries = _requests_has_max_retries() |