On Thu, Dec 20, 2018 at 08:36:39PM +0300, Ilya Maximets wrote:
> 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)

Thanks for the fix.

I'm surprised to see this for the Python library but not for the very
similar code in check_connection_completion() in lib/socket-util.c.  Do
we need the same fix there?
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to