Skip to content
Snippets Groups Projects
Commit 80c10879 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Move sftp_channel under the ssh_mutex completely.

parent b855aa17
No related branches found
No related tags found
No related merge requests found
Pipeline #5839 passed
......@@ -270,8 +270,9 @@ ssh_input_thread(void *args)
* and will deadlock.
*/
if (rd > 0 && !sftpc_recv(sftp_state, conn_api.rd_buf, rd)) {
int sc = sftp_channel;
pthread_mutex_unlock(&ssh_mutex);
close_sftp_channel(sftp_channel);
close_sftp_channel(sc);
pthread_mutex_lock(&ssh_mutex);
FlushData(ssh_session);
pthread_mutex_unlock(&ssh_mutex);
......@@ -566,6 +567,7 @@ add_public_key(void *vpriv)
pubkey_thread_running = false;
return;
}
int sc = sftp_channel;
pthread_mutex_unlock(&ssh_mutex);
pthread_mutex_unlock(&ssh_tx_mutex);
active = 0;
......@@ -580,7 +582,7 @@ add_public_key(void *vpriv)
SLEEP(10);
}
if (!active) {
close_sftp_channel(sftp_channel);
close_sftp_channel(sc);
free(priv);
pubkey_thread_running = false;
return;
......@@ -611,7 +613,7 @@ add_public_key(void *vpriv)
pthread_mutex_unlock(&ssh_mutex);
pthread_mutex_unlock(&ssh_tx_mutex);
if (sftp_state == NULL) {
close_sftp_channel(sftp_channel);
close_sftp_channel(new_sftp_channel);
free(priv);
pubkey_thread_running = false;
return;
......@@ -639,7 +641,7 @@ add_public_key(void *vpriv)
if (oldstate)
sftpc_finish(oldstate);
}
close_sftp_channel(sftp_channel);
close_sftp_channel(new_sftp_channel);
}
else {
pthread_mutex_unlock(&ssh_mutex);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment