From 6c924e87562f5eb986f6e6bf592e2a9d41fa90f1 Mon Sep 17 00:00:00 2001
From: Kali Kaneko <kali@leap.se>
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')

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()
-- 
cgit v1.2.3