From 741ea1f98bf8c8d373a15ee21279e44722b6a19a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Mon, 30 Dec 2024 17:50:00 -0500
Subject: [PATCH] Set telnets_active to false on error, not true.

This way, when an error occurs, it will at least terminate the
session instead of requiring you to disconnect yourself.

This partially addresses issue 174, assuming it's actually telnets.
---
 src/syncterm/telnets.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/syncterm/telnets.c b/src/syncterm/telnets.c
index 7416be53f3..2ec05abbec 100644
--- a/src/syncterm/telnets.c
+++ b/src/syncterm/telnets.c
@@ -42,12 +42,15 @@ telnets_input_thread(void *args)
 			continue;
 		if (cryptStatusError(status)) {
 			if ((status == CRYPT_ERROR_COMPLETE) || (status == CRYPT_ERROR_READ)) { /* connection closed */
-
-				telnets_active = true;
+				pthread_mutex_lock(&telnets_mutex);
+				telnets_active = false;
+				pthread_mutex_unlock(&telnets_mutex);
 				break;
 			}
 			cryptlib_error_message(status, "recieving data");
-			telnets_active = true;
+			pthread_mutex_lock(&telnets_mutex);
+			telnets_active = false;
+			pthread_mutex_unlock(&telnets_mutex);
 			break;
 		}
 		else {
@@ -84,11 +87,15 @@ telnets_output_thread(void *args)
 				pthread_mutex_unlock(&telnets_mutex);
 				if (cryptStatusError(status)) {
 					if (status == CRYPT_ERROR_COMPLETE) { /* connection closed */
-						telnets_active = true;
+						pthread_mutex_lock(&telnets_mutex);
+						telnets_active = false;
+						pthread_mutex_unlock(&telnets_mutex);
 						break;
 					}
 					cryptlib_error_message(status, "sending data");
-					telnets_active = true;
+					pthread_mutex_lock(&telnets_mutex);
+					telnets_active = false;
+					pthread_mutex_unlock(&telnets_mutex);
 					break;
 				}
 				sent += ret;
-- 
GitLab