From 32fec3f9a52fe0f4d472d1c5a08dc216fbf81535 Mon Sep 17 00:00:00 2001 From: Steffen Pohle Date: Sun, 17 Sep 2023 23:41:39 +0200 Subject: [PATCH] fixing little bugs. closing connection on error. --- Changelog | 3 +++ gui.cc | 5 +---- modbussrv.cc | 8 ++++++++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Changelog b/Changelog index 5a51588..544c7ab 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,6 @@ +2023-09-17: +- closing connection if an error occured. + 2023-09-16: - added message if a connection is closed. diff --git a/gui.cc b/gui.cc index 046655a..af07080 100644 --- a/gui.cc +++ b/gui.cc @@ -404,7 +404,7 @@ gboolean cb_thread_network_data_add (gpointer data) { } else { text = text + " Registers: " + std::to_string (mbdata->regstart); - text = text + " Bytes: " + std::to_string (mbdata->regcnt); + text = text + " Cnt: " + std::to_string (mbdata->regcnt); } } text = text + "\n"; @@ -470,9 +470,6 @@ gboolean cb_thread_network_text_add (gpointer data) { strftime (timetext, 255, "%H:%M:%S", curtime); - // - // build hex dump - // // // text =""; diff --git a/modbussrv.cc b/modbussrv.cc index 37286fe..20d62a5 100644 --- a/modbussrv.cc +++ b/modbussrv.cc @@ -261,16 +261,22 @@ void ModbusSrv::ServerThread() { char *txt = (char*)malloc(255); snprintf (txt, 255, "error on processing message\n"); gdk_threads_add_idle(cb_thread_network_text_add, txt); + delete clients[slot]; + clients[slot] = NULL; } } else if (mbindata->fc == 5 || mbindata->fc == 6) { if (WorkerAndEncodeWriteSingle(mbindata, mboutdata)) { clients[slot]->Write(mboutdata->buffer, mboutdata->bufferlen); + delete clients[slot]; + clients[slot] = NULL; } else { char *txt = (char*)malloc(255); snprintf (txt, 255, "error on processing message\n"); gdk_threads_add_idle(cb_thread_network_text_add, txt); + delete clients[slot]; + clients[slot] = NULL; } } else if (mbindata->fc == 15 || mbindata->fc == 16) { @@ -281,6 +287,8 @@ void ModbusSrv::ServerThread() { char *txt = (char*)malloc(255); snprintf (txt, 255, "error on processing message\n"); gdk_threads_add_idle(cb_thread_network_text_add, txt); + delete clients[slot]; + clients[slot] = NULL; } } gdk_threads_add_idle(cb_thread_network_data_add, mboutdata);