diff --git a/src/syncterm/ssh.c b/src/syncterm/ssh.c index b647695f6a270b6ce9cd0b9fc329baa63cdabf8e..1da43bbecf874c0d3e6b6a457ee9d355666e97ac 100644 --- a/src/syncterm/ssh.c +++ b/src/syncterm/ssh.c @@ -173,8 +173,8 @@ ssh_input_thread(void *args) sftp_do_finish = false; pthread_mutex_lock(&ssh_mutex); if (FlushData(ssh_session) == CRYPT_ERROR_COMPLETE) { - ssh_complete = true; pthread_mutex_unlock(&ssh_mutex); + ssh_complete = true; break; } if (ssh_channel != -1) { @@ -189,10 +189,10 @@ ssh_input_thread(void *args) } if (ssh_channel == -1 && sftp_channel == -1) { both_gone = true; - ssh_complete = true; } pthread_mutex_unlock(&ssh_mutex); if (both_gone) { + ssh_complete = true; break; } if (sftp_do_finish) { @@ -204,8 +204,8 @@ ssh_input_thread(void *args) pthread_mutex_lock(&ssh_mutex); if (FlushData(ssh_session) == CRYPT_ERROR_COMPLETE) { - ssh_complete = true; pthread_mutex_unlock(&ssh_mutex); + ssh_complete = true; break; } @@ -223,8 +223,8 @@ ssh_input_thread(void *args) } } if (ssh_channel == -1 && sftp_channel == -1) { - ssh_complete = true; pthread_mutex_unlock(&ssh_mutex); + ssh_complete = true; break; } @@ -332,8 +332,8 @@ ssh_output_thread(void *args) ret = 0; pthread_mutex_lock(&ssh_mutex); if (ssh_channel == -1) { - ssh_complete = true; pthread_mutex_unlock(&ssh_mutex); + ssh_complete = true; channel_gone = true; break; } @@ -345,8 +345,8 @@ ssh_output_thread(void *args) FlushData(ssh_session); } if (cryptStatusError(status)) { - ssh_complete = true; pthread_mutex_unlock(&ssh_mutex); + ssh_complete = true; if ((status == CRYPT_ERROR_COMPLETE) || (status == CRYPT_ERROR_NOTFOUND)) { /* connection closed */ channel_gone = true; break;