mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-08-08 19:02:06 +03:00
channels: Correctly handle timeouts in channel functions.
This commit is contained in:
@@ -1586,7 +1586,11 @@ static int channel_request(ssh_channel channel, const char *request,
|
||||
return SSH_OK;
|
||||
}
|
||||
pending:
|
||||
rc = ssh_handle_packets_termination(session,SSH_TIMEOUT_USER, ssh_channel_request_termination, channel);
|
||||
rc = ssh_handle_packets_termination(session,
|
||||
SSH_TIMEOUT_DEFAULT,
|
||||
ssh_channel_request_termination,
|
||||
channel);
|
||||
|
||||
if(session->session_state == SSH_SESSION_STATE_ERROR || rc == SSH_ERROR) {
|
||||
channel->request_state = SSH_CHANNEL_REQ_STATE_ERROR;
|
||||
}
|
||||
@@ -2127,8 +2131,11 @@ static int global_request(ssh_session session, const char *request,
|
||||
return SSH_OK;
|
||||
}
|
||||
pending:
|
||||
rc = ssh_handle_packets_termination(session, SSH_TIMEOUT_USER,
|
||||
ssh_global_request_termination, session);
|
||||
rc = ssh_handle_packets_termination(session,
|
||||
SSH_TIMEOUT_USER,
|
||||
ssh_global_request_termination,
|
||||
session);
|
||||
|
||||
if(rc==SSH_ERROR || session->session_state == SSH_SESSION_STATE_ERROR){
|
||||
session->global_req_state = SSH_CHANNEL_REQ_STATE_ERROR;
|
||||
}
|
||||
@@ -2906,8 +2913,10 @@ int ssh_channel_get_exit_status(ssh_channel channel) {
|
||||
if(channel == NULL) {
|
||||
return SSH_ERROR;
|
||||
}
|
||||
rc = ssh_handle_packets_termination(channel->session, SSH_TIMEOUT_USER,
|
||||
ssh_channel_exit_status_termination, channel);
|
||||
rc = ssh_handle_packets_termination(channel->session,
|
||||
SSH_TIMEOUT_DEFAULT,
|
||||
ssh_channel_exit_status_termination,
|
||||
channel);
|
||||
if (rc == SSH_ERROR || channel->session->session_state ==
|
||||
SSH_SESSION_STATE_ERROR)
|
||||
return SSH_ERROR;
|
||||
|
Reference in New Issue
Block a user