summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-10-28 18:26:53 -0200
committerKali Kaneko <kali@leap.se>2013-10-28 18:48:21 -0200
commit6c924e87562f5eb986f6e6bf592e2a9d41fa90f1 (patch)
tree9fba964baabe5a10751663b4e61f3c0d06e43ecb
parent856a3301b025f3d14c36a0ec0c90563358780670 (diff)
dependency pinning on requests
-rw-r--r--changes/feature-4308-pin-requests-dep1
-rw-r--r--pkg/requirements.pip2
-rw-r--r--src/leap/bitmask/crypto/srpauth.py7
-rw-r--r--src/leap/bitmask/util/compat.py31
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()