From: Lev Stipakov <l...@openvpn.net>

Route delay may be only necessary when we perform
DHCP handshake. When we use IPAPI / netsh / manual,
no delay needed.

Signed-off-by: Lev Stipakov <l...@openvpn.net>
---
 src/openvpn/options.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/openvpn/options.c b/src/openvpn/options.c
index cebcbb07..a6f40e10 100644
--- a/src/openvpn/options.c
+++ b/src/openvpn/options.c
@@ -3001,9 +3001,18 @@ options_postprocess_mutate_invariant(struct options 
*options)
     }
 
 #ifdef _WIN32
+    /* when using wintun, kernel doesn't send DHCP requests, so use netsh to 
set IP address and netmask */
+    if (options->wintun)
+    {
+        options->tuntap_options.ip_win32_type = IPW32_SET_NETSH;
+    }
+
     if ((dev == DEV_TYPE_TUN || dev == DEV_TYPE_TAP) && 
!options->route_delay_defined)
     {
-        if (options->mode == MODE_POINT_TO_POINT)
+        /* delay may only be necessary when we perform DHCP handshake */
+        const bool dhcp = (options->tuntap_options.ip_win32_type == 
IPW32_SET_DHCP_MASQ)
+                          || (options->tuntap_options.ip_win32_type == 
IPW32_SET_ADAPTIVE);
+        if ((options->mode == MODE_POINT_TO_POINT) && dhcp)
         {
             options->route_delay_defined = true;
             options->route_delay = 5; /* Vista sometimes has a race without 
this */
@@ -3016,14 +3025,8 @@ options_postprocess_mutate_invariant(struct options 
*options)
         options->ifconfig_noexec = false;
     }
 
-    /* for wintun kernel doesn't send DHCP requests, so use netsh to set IP 
address and netmask */
-    if (options->wintun)
-    {
-        options->tuntap_options.ip_win32_type = IPW32_SET_NETSH;
-    }
-
     remap_redirect_gateway_flags(options);
-#endif
+#endif /* ifdef _WIN32 */
 
 #if P2MP_SERVER
     /*
-- 
2.17.1



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to