diff --git a/src/syncterm/ssh.c b/src/syncterm/ssh.c index 6f58578cf04a54ee30e963fa1449acc91e20fecb..5157512d61a3d547458bc9ab9e5367052e01be78 100644 --- a/src/syncterm/ssh.c +++ b/src/syncterm/ssh.c @@ -97,9 +97,7 @@ void ssh_output_thread(void *args) while(ssh_active && !conn_api.terminate) { pthread_mutex_lock(&(conn_outbuf.mutex)); wr=conn_buf_wait_bytes(&conn_outbuf, 1, 100); - pthread_mutex_unlock(&(conn_outbuf.mutex)); if(wr) { - pthread_mutex_lock(&(conn_outbuf.mutex)); wr=conn_buf_get(&conn_outbuf, conn_api.wr_buf, conn_api.wr_buf_size); pthread_mutex_unlock(&(conn_outbuf.mutex)); sent=0; @@ -118,6 +116,8 @@ void ssh_output_thread(void *args) if(sent) cl.FlushData(ssh_session); } + else + pthread_mutex_unlock(&(conn_outbuf.mutex)); } conn_api.output_thread_running=0; }