message: Add Windows shutdown handler
  GitHub-Pull:
  Rebased-From:
diff: @@ -283,6 +283,7 @@ void Shutdown()
  * The execution context the handler is invoked in is not guaranteed,
  * so we restrict handler operations to just touching variables:
  */
  +#ifndef WIN32
  static void HandleSIGTERM(int)
  {
  fRequestShutdown = true;
  @@ -292,6 +293,14 @@ static void HandleSIGHUP(int)
  {
  fReopenDebugLog = true;
  }
  +#else
  +static BOOL WINAPI consoleCtrlHandler(DWORD dwCtrlType)
  +{
  + fRequestShutdown = true;
  + Sleep(INFINITE);
  + return true;
  +}
  +#endif
  #ifndef WIN32
  static void registerSignalHandler(int signal, void(*handler)(int))
  @@ -880,6 +889,8 @@ bool AppInitBasicSetup()
  // Ignore SIGPIPE, otherwise it will bring the daemon down if the client closes unexpectedly
  signal(SIGPIPE, SIG_IGN);
  +#else
  + SetConsoleCtrlHandler(consoleCtrlHandler, true);
  #endif
  std::set_new_handler(new_handler_terminate);
  