When OVSDB server is aborted, the SSL send function will throw SSL.SysCallError exception, which we need to catch and return it's -errno.
While SSL.WantWriteError exception needs to return -EAGAIN based on its parent class, not EAGAIN Signed-off-by: Guoshuai Li <[email protected]> --- python/ovs/stream.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/ovs/stream.py b/python/ovs/stream.py index 4fd68f9..58c4925 100644 --- a/python/ovs/stream.py +++ b/python/ovs/stream.py @@ -809,7 +809,9 @@ class SSLStream(Stream): buf = buf.encode('utf-8') return super(SSLStream, self).send(buf) except SSL.WantWriteError: - return errno.EAGAIN + return -errno.EAGAIN + except SSL.SysCallError as e: + return -ovs.socket_util.get_exception_errno(e) if SSL: -- 2.10.1.windows.1 This is the exception call stack: neutron-server: File "/usr/lib/python2.7/site-packages/ovs/jsonrpc.py", line 243, in send neutron-server: self.run() neutron-server: File "/usr/lib/python2.7/site-packages/ovs/jsonrpc.py", line 202, in run neutron-server: retval = self.stream.send(self.output) neutron-server: File "/usr/lib/python2.7/site-packages/ovs/stream.py", line 488, in send neutron-server: return super(SSLStream, self).send(buf) neutron-server: File "/usr/lib/python2.7/site-packages/ovs/stream.py", line 241, in send neutron-server: return self.socket.send(buf) neutron-server: File "/usr/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1271, in send neutron-server: self._raise_ssl_error(self._ssl, result) neutron-server: File "/usr/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1178, in _raise_ssl_error neutron-server: raise SysCallError(errno, errorcode.get(errno)) neutron-server: SysCallError: (104, 'ECONNRESET') _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
