]> git.ipfire.org Git - thirdparty/openvpn.git/commit
Fix signal handling on Windows
authorSelva Nair <selva.nair@gmail.com>
Fri, 6 Jan 2023 00:54:38 +0000 (19:54 -0500)
committerGert Doering <gert@greenie.muc.de>
Sun, 8 Jan 2023 16:28:09 +0000 (17:28 +0100)
commit22977577ed128ac953e7ebfe30f839bcf651b334
tree7fa924c04540b66395c71235107e30cedec6c5e2
parentdd66958198f7c4dcf7fca0db82ca72996100b3bd
Fix signal handling on Windows

- In win32_signal_get() re-order the check so that Windows
  signals are picked up even if signal_received is non-zero

- When management is not active, management_sleep() becomes sleep()
  but it is not interruptible by signals on Windows. Fix this by
  periodically checking for signal.

Trac: #311 #639 (windows specific part)
Github: Fixes OpenVPN/openvpn#205 (windows specific part)

Note: if stuck in address resolution, press ctrl-C and wait for
getaddrinfo() to timeout.

v2: WIN32 --> _WIN32
    add a chunk in management_sleep that was missed by sloppy
    conflict-resolution

v3: following review by Lev Stipakov <lstipakov@gmail.com>
  win32_sleep()
    - Early fallback to Sleep() if no wait handles -- less indentation
    - Check signal only if wait-object triggered
    - Exit the while loop if not safe to continue
  Behaviour of win32_sleep(0) checking signal is retained though may be
  redundant

v4: Avoid Sleep(0) and never loop back to wait again if wait-failed

Signed-off-by: Selva Nair <selva.nair@gmail.com>
Acked-by: Lev Stipakov <lstipakov@gmail.com>
Message-Id: <20230106005438.1664046-1-selva.nair@gmail.com>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25895.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/manage.c
src/openvpn/win32.c
src/openvpn/win32.h