diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2011-09-02 11:15:28 +0300 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2011-09-02 23:02:27 +0200 |
commit | 058bb0f4ea24a23ae47f7bbe607c2efd446005d1 (patch) | |
tree | 318e6be99f5f3c16127690e8207250658b644293 | |
parent | 64b125700eb472787eea6dba9d2ca29d8bc360d7 (diff) | |
download | libssh-058bb0f4ea24a23ae47f7bbe607c2efd446005d1.tar.gz libssh-058bb0f4ea24a23ae47f7bbe607c2efd446005d1.tar.xz libssh-058bb0f4ea24a23ae47f7bbe607c2efd446005d1.zip |
SSH1: fix build
(cherry picked from commit 3eece8ac0b107a7df8d95325ef17ed19d6429e75)
Conflicts:
src/channels.c
src/channels1.c
-rw-r--r-- | include/libssh/channels.h | 2 | ||||
-rw-r--r-- | src/channels.c | 6 | ||||
-rw-r--r-- | src/channels1.c | 19 |
3 files changed, 15 insertions, 12 deletions
diff --git a/include/libssh/channels.h b/include/libssh/channels.h index 4cdeb2b8..c054374d 100644 --- a/include/libssh/channels.h +++ b/include/libssh/channels.h @@ -102,7 +102,7 @@ int channel_change_pty_size1(ssh_channel channel, int cols, int rows); int channel_request_shell1(ssh_channel channel); int channel_request_exec1(ssh_channel channel, const char *cmd); int channel_write1(ssh_channel channel, const void *data, int len); - +ssh_channel ssh_get_channel1(ssh_session session); #endif #endif /* CHANNELS_H_ */ diff --git a/src/channels.c b/src/channels.c index 8c078392..c3d847ab 100644 --- a/src/channels.c +++ b/src/channels.c @@ -390,10 +390,8 @@ static ssh_channel channel_from_msg(ssh_session session, ssh_buffer packet) { uint32_t chan; #ifdef WITH_SSH1 /* With SSH1, the channel is always the first one */ - if(session->version==1) { - struct ssh_iterator *it = ssh_list_get_iterator(session->channels); - return ssh_iterator_value(ssh_channel, it); - } + if(session->version==1) + return ssh_get_channel1(session); #endif if (buffer_get_u32(packet, &chan) != sizeof(uint32_t)) { ssh_set_error(session, SSH_FATAL, diff --git a/src/channels1.c b/src/channels1.c index ad2a7c86..7589d227 100644 --- a/src/channels1.c +++ b/src/channels1.c @@ -222,17 +222,15 @@ int channel_request_exec1(ssh_channel channel, const char *cmd) { } SSH_PACKET_CALLBACK(ssh_packet_data1){ - ssh_channel channel; + ssh_channel channel = ssh_get_channel1(session); ssh_string str = NULL; int is_stderr=(type==SSH_SMSG_STDOUT_DATA ? 0 : 1); - struct ssh_iterator *it = ssh_list_get_iterator(session->channels); (void)user; str = buffer_get_ssh_string(packet); if (str == NULL) { ssh_log(session, SSH_LOG_FUNCTIONS, "Invalid data packet !\n"); return SSH_PACKET_USED; } - channel = ssh_iterator_value(ssh_channel, it); ssh_log(session, SSH_LOG_PROTOCOL, "Adding %" PRIdS " bytes data in %d", @@ -249,15 +247,12 @@ SSH_PACKET_CALLBACK(ssh_packet_data1){ } SSH_PACKET_CALLBACK(ssh_packet_close1){ - ssh_channel channel; - struct ssh_iterator *it = ssh_list_get_iterator(session->channels); + ssh_channel channel = ssh_get_channel1(session); uint32_t status; (void)type; (void)user; - channel = ssh_iterator_value(ssh_channel, it); - buffer_get_u32(packet, &status); /* * It's much more than a channel closing. spec says it's the last @@ -303,5 +298,15 @@ int channel_write1(ssh_channel channel, const void *data, int len) { return origlen; } +ssh_channel ssh_get_channel1(ssh_session session){ + struct ssh_iterator *it; + /* With SSH1, the channel is always the first one */ + if(session->channels != NULL){ + it = ssh_list_get_iterator(session->channels); + if(it) + return ssh_iterator_value(ssh_channel, it); + } + return NULL; +} #endif /* WITH_SSH1 */ /* vim: set ts=2 sw=2 et cindent: */ |