Browse Source

Alternative approach to connection reset.

master
James Hilliard 8 years ago
parent
commit
76e4a7a964
  1. 14
      jmclient/jmclient/jsonrpc.py

14
jmclient/jmclient/jsonrpc.py

@ -20,10 +20,14 @@ from __future__ import absolute_import, print_function
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
import errno
import socket
import base64 import base64
import httplib import httplib
import json import json
from jmclient import get_log
jlog = get_log()
class JsonRpcError(Exception): class JsonRpcError(Exception):
""" """
@ -100,11 +104,15 @@ class JsonRpc(object):
raise exc raise exc
except httplib.BadStatusLine: except httplib.BadStatusLine:
return "CONNFAILURE" return "CONNFAILURE"
except Exception as exc: except socket.error as e:
if str(exc) == "Connection reset by peer": if e.errno != errno.ECONNRESET:
jlog.error('Unhandled connection error ' + str(e))
raise e
jlog.warn('Connection was reset, attempting reconnect.')
self.conn.close()
self.conn.connect() self.conn.connect()
continue continue
else: except Exception as exc:
raise JsonRpcConnectionError("JSON-RPC connection failed. Err:" + raise JsonRpcConnectionError("JSON-RPC connection failed. Err:" +
repr(exc)) repr(exc))
break break

Loading…
Cancel
Save