]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
For Mac OSX, when DARWIN_USE_IPCONFIG is defined, retry ipconfig
authorJames Yonan <james@openvpn.net>
Tue, 12 Apr 2011 05:14:34 +0000 (05:14 +0000)
committerDavid Sommerseth <dazo@users.sourceforge.net>
Tue, 26 Apr 2011 20:29:11 +0000 (22:29 +0200)
command on failure once every second for up to 15 seconds.  This
is necessary to work around an issue observed on OSX 10.5 where
the ipconfig command sometimes fails if executed immediately after
the tun device open.

git-svn-id: http://svn.openvpn.net/projects/openvpn/branches/BETA21/openvpn@7151 e7ae566f-a301-0410-adde-c780ea21d3b5

tun.c

diff --git a/tun.c b/tun.c
index 8c94f89cf1addd1c5cef1d0b67d44e0ba06fc60b..f2dec258a357917a459fdd2e5bf947460fd4ea95 100644 (file)
--- a/tun.c
+++ b/tun.c
@@ -801,7 +801,17 @@ do_ifconfig (struct tuntap *tt,
                       );
        }
       argv_msg (M_INFO, &argv);
-      openvpn_execve_check (&argv, es, S_FATAL, "Mac OS X ipconfig failed");
+      {
+       int i;
+       const int n = 15;
+       for (i = 1; i <= n; ++i) /* OSX 10.5 needs retry */
+         {
+           if (openvpn_execve_check (&argv, es, (i == n) ? S_FATAL : 0, "Mac OS X ipconfig failed"))
+             break;
+           msg (M_INFO, "Retry #%d", i);
+           openvpn_sleep(1);
+         }
+      }
       tt->did_ifconfig = true;
 #else
       /*