Changelog
Daniel S (18 April 2007)
+- James Housley made SFTP uploads use libssh2's non-blocking API
+
- Prevent the internal progress meter from updating more frequently than once
per second.
This release would not have looked like this without help, code, reports and
advice from friends like these:
- Song Ma, Dan Fandrich, Yang Tse, Jay Austin, Robert Iakobashvil
+ Song Ma, Dan Fandrich, Yang Tse, Jay Austin, Robert Iakobashvil, James Housley
Thanks! (and sorry if I forgot to mention someone)
ssize_t Curl_sftp_send(struct connectdata *conn, int sockindex,
void *mem, size_t len)
{
- ssize_t nwrite;
-
- /* libssh2_sftp_write() returns size_t !*/
+ ssize_t nwrite; /* libssh2_sftp_write() returns size_t !*/
+#ifdef LIBSSH2SFTP_EAGAIN
+ /* we prefer the non-blocking API but that didn't exist previously */
+ nwrite = (ssize_t)
+ libssh2_sftp_writenb(conn->data->reqdata.proto.ssh->sftp_handle, mem, len);
+#else
nwrite = (ssize_t)
libssh2_sftp_write(conn->data->reqdata.proto.ssh->sftp_handle, mem, len);
+#endif
(void)sockindex;
return nwrite;
}
-
/* The get_pathname() function is being borrowed from OpenSSH sftp.c
version 4.6p1. */
/*