From 4ed36809b825d8b23bf78dabbf43dbbca4b577f0 Mon Sep 17 00:00:00 2001 From: Charl Wentzel Date: Mon, 27 Nov 2017 18:48:41 +0200 Subject: [PATCH] Important update: - Detect serial port disconnect/close --- SelectableCore.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/SelectableCore.cpp b/SelectableCore.cpp index ce7daf4..b853979 100644 --- a/SelectableCore.cpp +++ b/SelectableCore.cpp @@ -1130,12 +1130,30 @@ bool CSelectableCore::Read( THandle * Handle ) ioctl( Handle->FD, FIONREAD, &BytesWaiting ); // EOF from server - if (!BytesWaiting) + if (BytesWaiting < 1) { // Close Handle Close( Handle ); - // Destroy Remote Client + // Destroy Client + if (Handle->Type == ctRemoteClient) { + RemoveHandle( Handle ); + } + return false; + } + } + else if (Handle->Type == ctPort) + { + // Check if anything to read + ioctl( Handle->FD, FIONREAD, &BytesWaiting ); + + // EOF from port + if (BytesWaiting < 1) + { + // Close Handle + Close( Handle ); + + // Destroy Port if (Handle->Type == ctRemoteClient) { RemoveHandle( Handle ); }