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 1aaa112..e67dbdd 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;