diff --git a/telldus-core/service/ConnectionListener_win.cpp b/telldus-core/service/ConnectionListener_win.cpp index 03919f6e..992e1a87 100644 --- a/telldus-core/service/ConnectionListener_win.cpp +++ b/telldus-core/service/ConnectionListener_win.cpp @@ -113,13 +113,17 @@ void ConnectionListener::run() { ConnectNamedPipe(hPipe, &oOverlap); - WaitForSingleObject(oOverlap.hEvent, INFINITE); + DWORD result = WaitForSingleObject(oOverlap.hEvent, 1000); if (!d->running) { break; } - + if(result == WAIT_TIMEOUT){ + CloseHandle(hPipe); + continue; + } BOOL connected = GetOverlappedResult(hPipe, &oOverlap, &cbBytesRead, false); + if (!connected) { CloseHandle(hPipe); return;