From 15fe1a928aa5d7f9e8214cee1ce513450051cebb Mon Sep 17 00:00:00 2001 From: uvos Date: Thu, 8 Aug 2024 21:09:23 +0200 Subject: [PATCH] Correctly reregister serial port on failure-reconnect cycle --- clienthandler.h | 1 - main.cpp | 26 ++++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/clienthandler.h b/clienthandler.h index e8eedbb..9c7eb8a 100644 --- a/clienthandler.h +++ b/clienthandler.h @@ -14,7 +14,6 @@ private: CommunicatingSocket *_socket; bool _disconnected = false; - public: void cleanUp(); diff --git a/main.cpp b/main.cpp index 6a5fe2f..c6d7098 100644 --- a/main.cpp +++ b/main.cpp @@ -177,7 +177,9 @@ int main(int argc, char* argv[]) if(!config.noSerial) { if(serial == -1) + { return 1; + } else { struct epoll_event ev = {}; @@ -236,7 +238,17 @@ int main(int argc, char* argv[]) catch(serialIoException& ex) { close(serial); - serialPortReconnect(config, ex.what()); + serial = serialPortReconnect(config, ex.what()); + if(serial < 0) + { + std::cerr<<"Serial port connection has failed with: "<isDisconnected()) @@ -254,7 +266,17 @@ int main(int argc, char* argv[]) if(readlen < 0 && (errno != EAGAIN || errno != EWOULDBLOCK)) { close(serial); - serialPortReconnect(config, strerror(errno)); + serial = serialPortReconnect(config, strerror(errno)); + if(serial < 0) + { + std::cerr<<"Serial port connection has failed with: "<