]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix interactive service ignoring stop command if openvpn is running
authorSelva Nair <selva.nair@gmail.com>
Sun, 6 Mar 2016 05:19:19 +0000 (00:19 -0500)
committerGert Doering <gert@greenie.muc.de>
Sun, 6 Mar 2016 08:54:51 +0000 (09:54 +0100)
Make the exit event not auto-reset so that the signal propagates to
all worker threads and finally to the main thread.

Fixes Trac #666

Signed-off-by: Selva Nair <selva.nair@gmail.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1457241559-23374-1-git-send-email-selva.nair@gmail.com>
URL: http://article.gmane.org/gmane.network.openvpn.devel/11317
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpnserv/interactive.c

index 22239b273d348ef1a3acde14bf1cec92b3e92bc3..39397d12a6f60df3437b708ccc7d88940b7739f1 100644 (file)
@@ -1289,7 +1289,7 @@ ServiceStartInteractive (DWORD dwArgc, LPTSTR *lpszArgv)
     goto out;
 
   io_event = InitOverlapped (&overlapped);
-  exit_event = CreateEvent (NULL, FALSE, FALSE, NULL);
+  exit_event = CreateEvent (NULL, TRUE, FALSE, NULL);
   if (!exit_event || !io_event)
     {
       error = MsgToEventLog (M_SYSERR, TEXT("Could not create event"));
@@ -1356,6 +1356,7 @@ ServiceStartInteractive (DWORD dwArgc, LPTSTR *lpszArgv)
             {
               /* exit event signaled */
               CloseHandleEx (&pipe);
+              ResetEvent (exit_event);
               error = NO_ERROR;
               break;
             }