summaryrefslogtreecommitdiff
path: root/keystoneclient/session.py
diff options
context:
space:
mode:
authorBrant Knudson <bknudson@us.ibm.com>2015-08-02 11:22:18 -0500
committerBrant Knudson <bknudson@us.ibm.com>2015-08-02 11:22:18 -0500
commit22236fd763ed8d240b254ed54f892fb6fc0f454a (patch)
tree72406a344941a2787d1fe7fe9132d9b1192e8193 /keystoneclient/session.py
parentaa5738c23de6b88ff98ad649bef7b023d71a1b02 (diff)
downloadpython-keystoneclient-22236fd763ed8d240b254ed54f892fb6fc0f454a.tar.gz
Clarify setting socket_options
There was a lot of code that would have no effect if kwargs already had socket_options set. To make the code clearer, only execute the code if it's going to have an effect. Change-Id: Ic42f5a0bac07113aff59d36d19293dc6d65cd58a
Diffstat (limited to 'keystoneclient/session.py')
-rw-r--r--keystoneclient/session.py46
1 files changed, 24 insertions, 22 deletions
diff --git a/keystoneclient/session.py b/keystoneclient/session.py
index a3c7a6f..cace4f7 100644
--- a/keystoneclient/session.py
+++ b/keystoneclient/session.py
@@ -906,28 +906,30 @@ class TCPKeepAliveAdapter(requests.adapters.HTTPAdapter):
http://blogs.msdn.com/b/windowsazurestorage/archive/2010/06/25/nagle-s-algorithm-is-not-friendly-towards-small-requests.aspx
"""
def init_poolmanager(self, *args, **kwargs):
- socket_options = [
- # Keep Nagle's algorithm off
- (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),
- # Turn on TCP Keep-Alive
- (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
- # Set the maximum number of keep-alive probes
- (socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 4),
- # Send keep-alive probes every 15 seconds
- (socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 15),
- ]
-
- # Some operating systems (e.g., OSX) do not support setting
- # keepidle
- if hasattr(socket, 'TCP_KEEPIDLE'):
- socket_options += [
- # Wait 60 seconds before sending keep-alive probes
- (socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)
+ if 'socket_options' not in kwargs:
+ socket_options = [
+ # Keep Nagle's algorithm off
+ (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),
+ # Turn on TCP Keep-Alive
+ (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
+ # Set the maximum number of keep-alive probes
+ (socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 4),
+ # Send keep-alive probes every 15 seconds
+ (socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 15),
]
- # After waiting 60 seconds, and then sending a probe once every 15
- # seconds 4 times, these options should ensure that a connection
- # hands for no longer than 2 minutes before a ConnectionError is
- # raised.
- kwargs.setdefault('socket_options', socket_options)
+ # Some operating systems (e.g., OSX) do not support setting
+ # keepidle
+ if hasattr(socket, 'TCP_KEEPIDLE'):
+ socket_options += [
+ # Wait 60 seconds before sending keep-alive probes
+ (socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)
+ ]
+
+ # After waiting 60 seconds, and then sending a probe once every 15
+ # seconds 4 times, these options should ensure that a connection
+ # hands for no longer than 2 minutes before a ConnectionError is
+ # raised.
+
+ kwargs['socket_options'] = socket_options
super(TCPKeepAliveAdapter, self).init_poolmanager(*args, **kwargs)