[Openvpn-devel] Break 'try 256 dco devices' loop on EPERM

Message ID 20220803194211.1727822-1-gert@greenie.muc.de
State Superseded
Headers show
Series [Openvpn-devel] Break 'try 256 dco devices' loop on EPERM | expand

Commit Message

Gert Doering Aug. 3, 2022, 7:42 p.m. UTC
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.

Signed-off-by: Gert Doering <gert@greenie.muc.de>
---
 src/openvpn/tun.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Patch

diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c
index 02ded4d7..90cfc3bd 100644
--- a/src/openvpn/tun.c
+++ b/src/openvpn/tun.c
@@ -1883,13 +1883,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 */
+            if (ret == -EPERM)
+            {
+                break;
+            }
         }
         if (!dynamic_opened)
         {