diff --git a/sjrpc/core/rpcconnection.py b/sjrpc/core/rpcconnection.py index 4b0187cd9e7f965f929bdbf959ad626422c13d96..b1466560c6750dd4f7545031ce91a767c8485cca 100644 --- a/sjrpc/core/rpcconnection.py +++ b/sjrpc/core/rpcconnection.py @@ -55,6 +55,9 @@ class RpcConnection(object): # The manager of this connection self._manager = manager + # Is the RpcConnection connected to its peer: + self._connected = True + @classmethod def from_addr(cls, addr, port, manager, enable_ssl=False, timeout=30.0, cert=None, handler=None): @@ -163,6 +166,9 @@ class RpcConnection(object): Message must be a jsonisable structure. ''' + if not self._connected: + raise RpcError('SendError', 'disconnected from the peer') + logging.debug('Sending: %s', message) json_msg = json.dumps(message) size = struct.pack('!L', len(json_msg)) @@ -373,6 +379,8 @@ class RpcConnection(object): :type callback: :class:`str` or callable or None ''' + self._connected = False + try: self._sock.close() except socket.error as err: