]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Added "net stop dnscache" and "net start dnscache" in front
authorJames Yonan <james@openvpn.net>
Tue, 27 Jul 2010 21:46:34 +0000 (21:46 +0000)
committerJames Yonan <james@openvpn.net>
Tue, 27 Jul 2010 21:46:34 +0000 (21:46 +0000)
of existing --register-dns commands.

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

error.c
openvpn.8
options.c
tun.c
version.m4
win32.h

diff --git a/error.c b/error.c
index ec8f9df07a3eae1e804a1ce0ee8971e909fc7ff8..873718ce7abdb8893f6123e5f3368a5bd5ba96ec 100644 (file)
--- a/error.c
+++ b/error.c
@@ -477,14 +477,16 @@ redirect_stdout_stderr (const char *file, bool append)
     {
       HANDLE log_handle;
       int log_fd;
-      struct security_attributes sa;
 
-      init_security_attributes_allow_all (&sa);
+      SECURITY_ATTRIBUTES saAttr; 
+      saAttr.nLength = sizeof(SECURITY_ATTRIBUTES); 
+      saAttr.bInheritHandle = TRUE; 
+      saAttr.lpSecurityDescriptor = NULL; 
 
       log_handle = CreateFile (file,
                               GENERIC_WRITE,
                               FILE_SHARE_READ,
-                              &sa.sa,
+                              &saAttr,
                               append ? OPEN_ALWAYS : CREATE_ALWAYS,
                               FILE_ATTRIBUTE_NORMAL,
                               NULL);
@@ -505,10 +507,12 @@ redirect_stdout_stderr (const char *file, bool append)
       /* save original stderr for password prompts */
       orig_stderr = GetStdHandle (STD_ERROR_HANDLE);
 
+#if 0 /* seems not be necessary with stdout/stderr redirection below*/
       /* set up for redirection */
       if (!SetStdHandle (STD_OUTPUT_HANDLE, log_handle)
          || !SetStdHandle (STD_ERROR_HANDLE, log_handle))
        msg (M_ERR, "Error: cannot redirect stdout/stderr to --log file: %s", file);
+#endif
 
       /* direct stdout/stderr to point to log_handle */
       log_fd = _open_osfhandle ((intptr_t)log_handle, _O_TEXT);
index 1aa8382834da06e76f8f86d8c60b3a6ac4397ace..53aabdc1f7ac5a698978fe5240b399ceff764429 100644 (file)
--- a/openvpn.8
+++ b/openvpn.8
@@ -4750,8 +4750,9 @@ above.
 .\"*********************************************************
 .TP
 .B --register-dns
-Run ipconfig /flushdns and ipconfig /registerdns on
-connection initiation.  This is known to kick Windows into
+Run net stop dnscache, net start dnscache, ipconfig /flushdns
+and ipconfig /registerdns on connection initiation.
+This is known to kick Windows into
 recognizing pushed DNS servers.
 .\"*********************************************************
 .TP
index ce53ad598f99f79c36e732168a6af81cb0c048e4..e1de0d90e622d26cd1a64bcad4719a52e919d0f7 100644 (file)
--- a/options.c
+++ b/options.c
@@ -615,8 +615,8 @@ static const char usage_message[] =
   "--dhcp-pre-release : Ask Windows to release the previous TAP adapter lease on\n"
 "                       startup.\n"
   "--dhcp-release     : Ask Windows to release the TAP adapter lease on shutdown.\n"
-  "--register-dns     : Run ipconfig /flushdns and ipconfig /registerdns on\n"
-  "                     connection initiation.\n"
+  "--register-dns  : Run net stop dnscache, net start dnscache, ipconfig /flushdns\n"
+  "                  and ipconfig /registerdns on connection initiation.\n"
   "--tap-sleep n   : Sleep for n seconds after TAP adapter open before\n"
   "                  attempting to set adapter properties.\n"
   "--pause-exit         : When run from a console window, pause before exiting.\n"
diff --git a/tun.c b/tun.c
index b05fcf8ce9d3c29f3e7526fa00f73d785c8d0b84..7a87256efe11df5a2d0f7409089a73ecf81ddcd2 100644 (file)
--- a/tun.c
+++ b/tun.c
@@ -3390,17 +3390,37 @@ ipconfig_register_dns (const struct env_set *es)
   const char err[] = "ERROR: Windows ipconfig command failed";
 
   netcmd_semaphore_lock ();
+
   argv_init (&argv);
+
+  argv_printf (&argv, "%s%sc stop dnscache",
+              get_win_sys_path(),
+              WIN_NET_PATH_SUFFIX);
+  argv_msg (D_TUNTAP_INFO, &argv);
+  status = openvpn_execve_check (&argv, es, 0, err);
+  argv_reset(&argv);
+
+  argv_printf (&argv, "%s%sc start dnscache",
+              get_win_sys_path(),
+              WIN_NET_PATH_SUFFIX);
+  argv_msg (D_TUNTAP_INFO, &argv);
+  status = openvpn_execve_check (&argv, es, 0, err);
+  argv_reset(&argv);
+
   argv_printf (&argv, "%s%sc /flushdns",
               get_win_sys_path(),
               WIN_IPCONFIG_PATH_SUFFIX);
+  argv_msg (D_TUNTAP_INFO, &argv);
   status = openvpn_execve_check (&argv, es, 0, err);
   argv_reset(&argv);
+
   argv_printf (&argv, "%s%sc /registerdns",
               get_win_sys_path(),
               WIN_IPCONFIG_PATH_SUFFIX);
+  argv_msg (D_TUNTAP_INFO, &argv);
   status = openvpn_execve_check (&argv, es, 0, err);
   argv_reset(&argv);
+
   netcmd_semaphore_release ();
 }
 
index be40252d9dc08bb8a29ba4ddf66887021d71c263..4add313d37aa2808cfd6cdc9903debfdb2cdc021 100644 (file)
@@ -1,5 +1,5 @@
 dnl define the OpenVPN version
-define(PRODUCT_VERSION,[2.1.1n])
+define(PRODUCT_VERSION,[2.1.1o])
 dnl define the TAP version
 define(PRODUCT_TAP_ID,[tap0901])
 define(PRODUCT_TAP_WIN32_MIN_MAJOR,[9])
diff --git a/win32.h b/win32.h
index f974b065525d0a2c987755d477d926776501e169..fcc3062dfcc316da0320d3d50b30c29c857c3874 100644 (file)
--- a/win32.h
+++ b/win32.h
@@ -34,6 +34,7 @@
 #define NETSH_PATH_SUFFIX     "\\system32\\netsh.exe"
 #define WIN_ROUTE_PATH_SUFFIX "\\system32\\route.exe"
 #define WIN_IPCONFIG_PATH_SUFFIX "\\system32\\ipconfig.exe"
+#define WIN_NET_PATH_SUFFIX "\\system32\\net.exe"
 
 /*
  * Win32-specific OpenVPN code, targetted at the mingw