-
Notifications
You must be signed in to change notification settings - Fork 22
Description
The function xmlclient.py:SoapEnvelope.post() is called with conn as an instance of a httplib.HTTPSConnection produced by makeConnection().
The "conn" variable is, however, sometimes recreated inside here with conn = makeConnection(scheme, host). This doesn't make much sense for recovery, since it will never be propagated back up to the caller's __conn. The only valid use-case is when the caller didn't pass a connection (which does happen in Client.login() until Client.useSession() is called immediately after.
But if an exception is thrown, this sets conn=None and then makes a new local conn on the next pass.
except (httplib.HTTPException, socket.error):
if conn != None:
conn.close()
conn = None
response = None
I think this reconnect loop was born of frustration without thinking things through.
It probably makes more sense to never set conn = None, and just do a conn.close(). The next iteration's conn.request() will cause a new open, if required, since conn.auto_open=True.