# XMLRPC-specific code for SFA Client
import xmlrpclib
-#from sfa.util.httpsProtocol import HTTPS, HTTPSConnection
from httplib import HTTPS, HTTPSConnection
+
from sfa.util.sfalogging import logger
+
##
# ServerException, ExceptionUnmarshaller
#
if hasattr(conn, 'set_timeout'):
conn.set_timeout(self.timeout)
+ # Some logic to deal with timeouts. It appears that some (or all) versions
+ # of python don't set the timeout after the socket is created. We'll do it
+ # ourselves by forcing the connection to connect, finding the socket, and
+ # calling settimeout() on it. (tested with python 2.6)
+ if self.timeout:
+ if hasattr(conn, "_conn"):
+ # HTTPS is a wrapper around HTTPSConnection
+ real_conn = conn._conn
+ else:
+ real_conn = conn
+ conn.connect()
+ if hasattr(real_conn, "sock") and hasattr(real_conn.sock, "settimeout"):
+ real_conn.sock.settimeout(float(self.timeout))
+
return conn
def getparser(self):