summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Yonan <james@openvpn.net>2011-04-12 05:14:34 +0000
committerJames Yonan <james@openvpn.net>2011-04-12 05:14:34 +0000
commit2a12831a06c5ea73c4a7d68618a22d7ad18b2f01 (patch)
tree5393d868485b37c5bedec4960725b3e4aa4d7714
parentfbfebb028cee6249fc096cd11632d2ba95f28e64 (diff)
downloadopenvpn-2a12831a06c5ea73c4a7d68618a22d7ad18b2f01.tar.gz
openvpn-2a12831a06c5ea73c4a7d68618a22d7ad18b2f01.tar.xz
openvpn-2a12831a06c5ea73c4a7d68618a22d7ad18b2f01.zip
For Mac OSX, when DARWIN_USE_IPCONFIG is defined, retry ipconfig
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
-rw-r--r--tun.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/tun.c b/tun.c
index 8c94f89..f2dec25 100644
--- 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
/*