From 82d3f97659d48383ca6b4816fc29a11d1e0ae7ee Mon Sep 17 00:00:00 2001
From: James Housley <jim@thehousleys.net>
Date: Thu, 14 Jun 2007 10:36:53 +0000
Subject: [PATCH] BUG FIX:  When reading a directory listing that contains
 symlinks with the latest libssh2, the listing would be truncated at the
 symlink. Fix by looping on LIBSSH2_ERROR_EAGAIN, like the rest of the calls.

---
 lib/ssh.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/ssh.c b/lib/ssh.c
index e7935ad243..bc7d3eb41a 100644
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -1573,8 +1573,14 @@ CURLcode Curl_sftp_do(struct connectdata *conn, bool *done)
               char linkPath[PATH_MAX + 1];
 
               snprintf(linkPath, PATH_MAX, "%s%s", sftp->path, filename);
+#if (LIBSSH2_APINO >= 200706012030)
+              while ((len = libssh2_sftp_readlink(sftp->sftp_session, linkPath,
+                                                  filename, PATH_MAX)) ==
+                     LIBSSH2_ERROR_EAGAIN);
+#else /* !(LIBSSH2_APINO >= 200706012030) */
               len = libssh2_sftp_readlink(sftp->sftp_session, linkPath,
                                           filename, PATH_MAX);
+#endif /* !(LIBSSH2_APINO >= 200706012030) */
               line = realloc(line, totalLen + 4 + len);
               if (!line)
                 return CURLE_OUT_OF_MEMORY;
-- 
GitLab