Otherwise failed non-blocking connection reported as connected. This causes errors in all following operations with the socket.
For example, ovsdb-idl tests fails with the following error trying to send data to the 'WRONG_PORT_1': stderr: jsonrpc transaction failed: Broken pipe This happens because dispite of SelectPoll, select.poll could return POLLHUP without POLLERR set. This fixes tests on FreeBSD. CC: Numan Siddique <[email protected]> Fixes: c1aa16d191d2 ("ovs python: ovs.stream.open_block() returns success even if the remote is unreachable") Signed-off-by: Ilya Maximets <[email protected]> --- python/ovs/socket_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/ovs/socket_util.py b/python/ovs/socket_util.py index 8e582fe91..2596ddefd 100644 --- a/python/ovs/socket_util.py +++ b/python/ovs/socket_util.py @@ -178,7 +178,7 @@ def check_connection_completion(sock): pfds = p.poll(0) if len(pfds) == 1: revents = pfds[0][1] - if revents & ovs.poller.POLLERR: + if revents & ovs.poller.POLLERR or revents & ovs.poller.POLLHUP: try: # The following should raise an exception. sock.send("\0".encode(), socket.MSG_DONTWAIT) -- 2.17.1 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
