]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
sftp upload: expire to advance state machine
authorDaniel Stenberg <daniel@haxx.se>
Sat, 12 Mar 2011 22:02:04 +0000 (23:02 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Sat, 12 Mar 2011 22:02:04 +0000 (23:02 +0100)
When using the multi_socket API to do SFTP upload, it is important that
we set a quick expire when leaving the SSH_SFTP_UPLOAD_INIT state as
there's nothing happening on the socket so there's no read or write to
wait for, but the next libssh2 API function needs to be called to get
the ball rolling.

This is one of the problems detected by test 582.

Reported by: Henry Ludemann <misc@hl.id.au>

lib/ssh.c

index 1aaa112b49d6168994795c9a48617dccc09a72e4..e67dbdd8e76c99ce08602d67bca0e8792ad9974e 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -1599,6 +1599,11 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
            figure out a "real" bitmask */
         sshc->orig_waitfor = data->req.keepon;
 
+        /* since we don't really wait for anything at this point, we want the
+           state machine to move on as soon as possible so we set a very short
+           timeout here */
+        Curl_expire(data, 1);
+
         state(conn, SSH_STOP);
       }
       break;