diff --git a/src/syncterm/telnets.c b/src/syncterm/telnets.c index 7416be53f386ee49e4e23d48186fe19601c5b58a..2ec05abbecceed2c5ae55974ad507f16926c4a9a 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;