diff options
author | Kamil Dudka <kdudka@redhat.com> | 2013-10-07 16:07:50 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2013-10-12 23:03:28 +0200 |
commit | d015f4ccac627852869cb45e31ccdc9fbd97dc47 (patch) | |
tree | 6adc98e7f8317323f427cf27b8bea0dfd5847133 /lib | |
parent | 143d7c13d8dfee156a4bd6ec442a5394b3736588 (diff) |
ssh: improve the logic for detecting blocking direction
This fixes a regression introduced by commit 0feeab78 limiting the speed
of SCP upload to 16384 B/s on a fast connection (such as localhost).
Diffstat (limited to 'lib')
-rw-r--r-- | lib/ssh.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -2288,6 +2288,10 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block) sshc->actualcode = result; } else { + /* store this original bitmask setup to use later on if we can't + figure out a "real" bitmask */ + sshc->orig_waitfor = data->req.keepon; + /* we want to use the _sending_ function even when the socket turns out readable as the underlying libssh2 scp send function will deal with both accordingly */ @@ -2604,9 +2608,7 @@ static void ssh_block2waitfor(struct connectdata *conn, bool block) { struct ssh_conn *sshc = &conn->proto.sshc; int dir; - if(!block) - conn->waitfor = 0; - else if((dir = libssh2_session_block_directions(sshc->ssh_session))) { + if(block && (dir = libssh2_session_block_directions(sshc->ssh_session))) { /* translate the libssh2 define bits into our own bit defines */ conn->waitfor = ((dir&LIBSSH2_SESSION_BLOCK_INBOUND)?KEEP_RECV:0) | ((dir&LIBSSH2_SESSION_BLOCK_OUTBOUND)?KEEP_SEND:0); |