From 6c924e87562f5eb986f6e6bf592e2a9d41fa90f1 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Mon, 28 Oct 2013 18:26:53 -0200 Subject: dependency pinning on requests --- src/leap/bitmask/crypto/srpauth.py | 7 ++++++- src/leap/bitmask/util/compat.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/leap/bitmask/util/compat.py (limited to 'src/leap/bitmask') 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 . +""" +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() -- cgit v1.2.3