aboutsummaryrefslogtreecommitdiff
path: root/src/channels.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2010-10-01 18:56:57 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2010-10-01 18:56:57 +0200
commit9f7e2c32524052b4b0e234b84195869d950943f9 (patch)
tree54fae10d5f00d7d0c4603a16b145b04ed5589e94 /src/channels.c
parent5675fbe73eb21792d012f60c0e5b38aedf8963bb (diff)
downloadlibssh-9f7e2c32524052b4b0e234b84195869d950943f9.tar.gz
libssh-9f7e2c32524052b4b0e234b84195869d950943f9.tar.xz
libssh-9f7e2c32524052b4b0e234b84195869d950943f9.zip
Update the window *after* effective read
Diffstat (limited to 'src/channels.c')
-rw-r--r--src/channels.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/channels.c b/src/channels.c
index cd63d284..1826f5a2 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -2142,6 +2142,12 @@ int ssh_channel_read(ssh_channel channel, void *dest, uint32_t count, int is_std
ssh_handle_packets(session,-1);
}
+
+ len = buffer_get_rest_len(stdbuf);
+ /* Read count bytes if len is greater, everything otherwise */
+ len = (len > count ? count : len);
+ memcpy(dest, buffer_get_rest(stdbuf), len);
+ buffer_pass_bytes(stdbuf,len);
/* Authorize some buffering while userapp is busy */
if (channel->local_window < WINDOWLIMIT) {
if (grow_window(session, channel, 0) < 0) {
@@ -2150,12 +2156,6 @@ int ssh_channel_read(ssh_channel channel, void *dest, uint32_t count, int is_std
}
}
- len = buffer_get_rest_len(stdbuf);
- /* Read count bytes if len is greater, everything otherwise */
- len = (len > count ? count : len);
- memcpy(dest, buffer_get_rest(stdbuf), len);
- buffer_pass_bytes(stdbuf,len);
-
leave_function();
return len;
}