diff options
author | Aris Adamantiadis <aris@0xbadc0de.be> | 2010-10-01 18:56:57 +0200 |
---|---|---|
committer | Aris Adamantiadis <aris@0xbadc0de.be> | 2010-10-01 18:56:57 +0200 |
commit | 9f7e2c32524052b4b0e234b84195869d950943f9 (patch) | |
tree | 54fae10d5f00d7d0c4603a16b145b04ed5589e94 /src | |
parent | 5675fbe73eb21792d012f60c0e5b38aedf8963bb (diff) | |
download | libssh-9f7e2c32524052b4b0e234b84195869d950943f9.tar.gz libssh-9f7e2c32524052b4b0e234b84195869d950943f9.tar.xz libssh-9f7e2c32524052b4b0e234b84195869d950943f9.zip |
Update the window *after* effective read
Diffstat (limited to 'src')
-rw-r--r-- | src/channels.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/channels.c b/src/channels.c index cd63d28..1826f5a 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; } |