- James Housley made SFTP uploads use libssh2's non-blocking API (if available)
authorDaniel Stenberg <daniel@haxx.se>
Wed, 18 Apr 2007 20:11:47 +0000 (20:11 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 18 Apr 2007 20:11:47 +0000 (20:11 +0000)
CHANGES
RELEASE-NOTES
lib/ssh.c

diff --git a/CHANGES b/CHANGES
index 8b1c024..94726eb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,8 @@
                                   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.
 
index c70daa2..5dee28b 100644 (file)
@@ -41,6 +41,6 @@ New curl mirrors:
 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)
index 1f8518a..a816c66 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -1018,17 +1018,20 @@ CURLcode Curl_sftp_done(struct connectdata *conn, CURLcode status,
 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. */
 /*