aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2011-09-02 11:15:28 +0300
committerAndreas Schneider <asn@cryptomilk.org>2011-09-02 23:02:27 +0200
commit058bb0f4ea24a23ae47f7bbe607c2efd446005d1 (patch)
tree318e6be99f5f3c16127690e8207250658b644293
parent64b125700eb472787eea6dba9d2ca29d8bc360d7 (diff)
downloadlibssh-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.h2
-rw-r--r--src/channels.c6
-rw-r--r--src/channels1.c19
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: */