From 7aa3520768a68fb6a73ab64569c7be5d571f86fc Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Wed, 8 Mar 2023 16:19:45 +0100 Subject: [PATCH] Set netlink socket to be non-blocking Even though we use select/poll to explicitly query when the netlink socket is ready for read, sometimes we end up reading from the socket when it is not ready to read and then the process hangs for several seconds (20-30s). Avoid this situation by setting the socket to be non-blocking, so we get a status in this case that allows us to continue. Change-Id: I35447c23a9350176007df5455bf9451021e9856d Signed-off-by: Arne Schwabe Acked-by: Antonio Quartulli Message-Id: <20230308151945.3670151-1-arne@rfc2549.org> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg26353.html Signed-off-by: Gert Doering --- src/openvpn/dco_linux.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/openvpn/dco_linux.c b/src/openvpn/dco_linux.c index c84f9cfe1..3ca5b50be 100644 --- a/src/openvpn/dco_linux.c +++ b/src/openvpn/dco_linux.c @@ -355,7 +355,9 @@ ovpn_dco_init_netlink(dco_context_t *dco) nl_geterror(ret)); } + /* set close on exec and non-block on the netlink socket */ set_cloexec(nl_socket_get_fd(dco->nl_sock)); + set_nonblock(nl_socket_get_fd(dco->nl_sock)); dco->nl_cb = nl_cb_alloc(NL_CB_DEFAULT); if (!dco->nl_cb) -- 2.47.2