Commit fe1c0176 authored by Marc Hoersken's avatar Marc Hoersken
Browse files

sockfilt.c: ignore non-key-events and continue waiting for input

parent eb01947e
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -515,15 +515,24 @@ static void lograw(unsigned char *buffer, ssize_t len)
 */
static DWORD WINAPI select_ws_stdin_wait_thread(LPVOID lpParameter)
{
  INPUT_RECORD inputrecord;
  HANDLE handle;
  DWORD mode;
  DWORD length;

  handle = (HANDLE) lpParameter;

  if(GetConsoleMode(handle, &mode))
    WaitForSingleObjectEx(handle, INFINITE, FALSE);
  if(GetConsoleMode(handle, &length)) {
    while(WaitForSingleObjectEx(handle, INFINITE, FALSE) == WAIT_OBJECT_0) {
      if(PeekConsoleInput(handle, &inputrecord, 1, &length)) {
        if(length == 1 && inputrecord.EventType != KEY_EVENT)
          ReadConsoleInput(handle, &inputrecord, 1, &length);
        else
    ReadFile(handle, NULL, 0, &mode, NULL);
          break;
      }
    }
  }
  else
    ReadFile(handle, NULL, 0, &length, NULL);

  return 0;
}