mirror of
https://github.com/OpenVPN/openvpn.git
synced 2024-09-20 12:02:28 +02:00
Promptly close the netcmd_semaphore handle after use
If more than one openvpn processes are running and one aborts without releasing the semaphore, subsequent processes fail to get a lock for the semaphore. This may be avoided by not keeping open handles to the semaphore so that Windows can destroy it when no open handles remain. See also: http://article.gmane.org/gmane.network.openvpn.devel/11913 Signed-off-by: Selva Nair <selva.nair@gmail.com> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <1465871689-13533-1-git-send-email-selva.nair@gmail.com> URL: http://article.gmane.org/gmane.network.openvpn.devel/11919 Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
parent
5d429efd97
commit
6aa4c90913
@ -105,7 +105,6 @@ init_win32 (void)
|
||||
}
|
||||
window_title_clear (&window_title);
|
||||
win32_signal_clear (&win32_signal);
|
||||
netcmd_semaphore_init ();
|
||||
}
|
||||
|
||||
void
|
||||
@ -751,6 +750,10 @@ void
|
||||
netcmd_semaphore_lock (void)
|
||||
{
|
||||
const int timeout_seconds = 600;
|
||||
|
||||
if (!netcmd_semaphore.hand)
|
||||
netcmd_semaphore_init ();
|
||||
|
||||
if (!semaphore_lock (&netcmd_semaphore, timeout_seconds * 1000))
|
||||
msg (M_FATAL, "Cannot lock net command semaphore");
|
||||
}
|
||||
@ -759,6 +762,8 @@ void
|
||||
netcmd_semaphore_release (void)
|
||||
{
|
||||
semaphore_release (&netcmd_semaphore);
|
||||
/* netcmd_semaphore has max count of 1 - safe to close after release */
|
||||
semaphore_close (&netcmd_semaphore);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user