From 78c02dd12bcfe7c4b4e96ea534b39ade9ee2c4d6 Mon Sep 17 00:00:00 2001 From: Gert Doering Date: Thu, 4 Aug 2022 10:25:02 +0200 Subject: [PATCH] Break 'try 256 dco devices' loop on EPERM If we get a permission denied error on one DCO device, trying 255 more times will not succeed, and just fill the log file with errors. Also, remove the msg() call there because it was at debug level (needed --verb 4 to be seen), didn't see the correct errno, and the sitnl code already prints the error. v2: use "else if" Signed-off-by: Gert Doering Acked-by: Antonio Quartulli Message-Id: <20220804082502.1750074-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg24799.html Signed-off-by: Gert Doering --- src/openvpn/tun.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index d9a017042..659bd2459 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -1867,13 +1867,18 @@ open_tun_dco_generic(const char *dev, const char *dev_type, { openvpn_snprintf(dynamic_name, sizeof(dynamic_name), "%s%d", dev, i); - if (open_tun_dco(tt, ctx, dynamic_name) == 0) + int ret = open_tun_dco(tt, ctx, dynamic_name); + if (ret == 0) { dynamic_opened = true; msg(M_INFO, "DCO device %s opened", dynamic_name); break; } - msg(D_READ_WRITE | M_ERRNO, "Tried opening %s (failed)", dynamic_name); + /* "permission denied" won't succeed if we try 256 times */ + else if (ret == -EPERM) + { + break; + } } if (!dynamic_opened) { -- 2.47.2