SSH1: handle exit-status message (channels would not close)
Этот коммит содержится в:
родитель
c4701a34d3
Коммит
68bab2a490
@ -103,6 +103,7 @@ void ssh_channel_do_free(ssh_channel channel);
|
||||
#ifdef WITH_SSH1
|
||||
SSH_PACKET_CALLBACK(ssh_packet_data1);
|
||||
SSH_PACKET_CALLBACK(ssh_packet_close1);
|
||||
SSH_PACKET_CALLBACK(ssh_packet_exist_status1);
|
||||
|
||||
/* channels1.c */
|
||||
int channel_open_session1(ssh_channel channel);
|
||||
|
@ -267,6 +267,19 @@ SSH_PACKET_CALLBACK(ssh_packet_close1){
|
||||
return SSH_PACKET_USED;
|
||||
}
|
||||
|
||||
SSH_PACKET_CALLBACK(ssh_packet_exist_status1){
|
||||
ssh_channel channel = ssh_get_channel1(session);
|
||||
uint32_t status;
|
||||
(void)type;
|
||||
(void)user;
|
||||
buffer_get_u32(packet, &status);
|
||||
channel->state = SSH_CHANNEL_STATE_CLOSED;
|
||||
channel->remote_eof = 1;
|
||||
channel->exit_status = ntohl(status);
|
||||
|
||||
return SSH_PACKET_USED;
|
||||
}
|
||||
|
||||
|
||||
int channel_write1(ssh_channel channel, const void *data, int len) {
|
||||
ssh_session session = channel->session;
|
||||
|
@ -55,7 +55,7 @@ ssh_packet_callback default_packet_handlers1[]= {
|
||||
ssh_packet_data1, //SSH_SMSG_STDOUT_DATA 17
|
||||
ssh_packet_data1, //SSH_SMSG_STDERR_DATA 18
|
||||
NULL, //SSH_CMSG_EOF 19
|
||||
NULL, //SSH_SMSG_EXITSTATUS 20
|
||||
ssh_packet_exist_status1, //SSH_SMSG_EXITSTATUS 20
|
||||
NULL, //SSH_MSG_CHANNEL_OPEN_CONFIRMATION 21
|
||||
NULL, //SSH_MSG_CHANNEL_OPEN_FAILURE 22
|
||||
NULL, //SSH_MSG_CHANNEL_DATA 23
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user