Add close window support for Windows (#1111)

* Add close window support for Windows

* Support logoff and shudown events as well

Without this change, when you close the terminal/shell window, it won't have the time to clean up which can cause authentication errors if you try to reconnect.

Blocking here infinitely is fine since when our main thread returns, it will shut down anyway

I found Go is doing this when I was searching, and there's a comment explained how it works: https://github.com/golang/go/issues/41884#issuecomment-706695923
This commit is contained in:
Tony 2023-06-18 16:02:05 +08:00 committed by GitHub
parent 76cbff370e
commit e397a5af75
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -946,6 +946,13 @@ BOOL WINAPI term_handler(DWORD sig)
keep_on_running = false;
#ifdef WIN32
switch (sig) {
case CTRL_CLOSE_EVENT:
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
// Will terminate us after we return, blocking it to cleanup
Sleep(INFINITE);
}
return(TRUE);
#endif
}