|
|
@@ -1,337 +0,0 @@
|
|
|
-Index: lib/ftp.c
|
|
|
---- lib/ftp.c.orig 2007-07-02 00:01:19 +0200
|
|
|
-+++ lib/ftp.c 2007-08-29 10:07:14 +0200
|
|
|
-@@ -2371,8 +2371,7 @@
|
|
|
- struct ftp_conn *ftpc = &conn->proto.ftpc;
|
|
|
- (void)instate; /* no use for this yet */
|
|
|
-
|
|
|
-- /* some need password anyway, and others just return 2xx ignored */
|
|
|
-- if((ftpcode == 331 || ftpcode/100 == 2) && (ftpc->state == FTP_USER)) {
|
|
|
-+ if((ftpcode == 331) && (ftpc->state == FTP_USER)) {
|
|
|
- /* 331 Password required for ...
|
|
|
- (the server requires to send the user's password too) */
|
|
|
- NBFTPSENDF(conn, "PASS %s", ftp->passwd?ftp->passwd:"");
|
|
|
-Index: lib/ssh.c
|
|
|
---- lib/ssh.c.orig 2007-07-06 22:13:24 +0200
|
|
|
-+++ lib/ssh.c 2007-08-29 10:07:14 +0200
|
|
|
-@@ -70,6 +70,24 @@
|
|
|
- #endif
|
|
|
- #endif /* !WIN32 */
|
|
|
-
|
|
|
-+#if defined(LIBSSH2_VERSION_NUM)
|
|
|
-+# if LIBSSH2_VERSION_NUM >= 0x001000
|
|
|
-+# define HAVE_LIBSSH2_NBLOCK 1
|
|
|
-+# else
|
|
|
-+# define HAVE_LIBSSH2_NBLOCK 0
|
|
|
-+# endif
|
|
|
-+#else /* !defined(LIBSSH2_VERSION_NUM) */
|
|
|
-+# if defined(LIBSSH2_APINO)
|
|
|
-+# if LIBSSH2_APINO >= 200706012030
|
|
|
-+# define HAVE_LIBSSH2_NBLOCK 1
|
|
|
-+# else
|
|
|
-+# define HAVE_LIBSSH2_NBLOCK 0
|
|
|
-+# endif
|
|
|
-+# else /* !defined(LIBSSH2_APINO) */
|
|
|
-+# define HAVE_LIBSSH2_NBLOCK 0
|
|
|
-+# endif /* defined(LIBSSH2_APINO) */
|
|
|
-+#endif /* defined(LIBSSH2_VERSION_NUM) */
|
|
|
-+
|
|
|
- #if (defined(NETWARE) && defined(__NOVELL_LIBC__))
|
|
|
- #undef in_addr_t
|
|
|
- #define in_addr_t unsigned long
|
|
|
-@@ -239,7 +257,7 @@
|
|
|
- (void)abstract;
|
|
|
- }
|
|
|
-
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- /*
|
|
|
- * SSH State machine related code
|
|
|
- */
|
|
|
-@@ -854,7 +872,7 @@
|
|
|
- infof(data, "SSH socket: %d\n", sock);
|
|
|
- #endif /* CURL_LIBSSH2_DEBUG */
|
|
|
-
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- state(conn, SSH_S_STARTUP);
|
|
|
-
|
|
|
- if (data->state.used_interface == Curl_if_multi)
|
|
|
-@@ -1134,7 +1152,7 @@
|
|
|
- * the destination file will be named the same name as the last directory
|
|
|
- * in the path.
|
|
|
- */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- do {
|
|
|
- scp->ssh_channel = libssh2_scp_send_ex(scp->ssh_session, scp->path,
|
|
|
- conn->data->set.new_file_perms,
|
|
|
-@@ -1169,7 +1187,7 @@
|
|
|
- */
|
|
|
- curl_off_t bytecount;
|
|
|
- memset(&sb, 0, sizeof(struct stat));
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- do {
|
|
|
- scp->ssh_channel = libssh2_scp_recv(scp->ssh_session, scp->path, &sb);
|
|
|
- if (!scp->ssh_channel &&
|
|
|
-@@ -1217,7 +1235,7 @@
|
|
|
- scp->path = NULL;
|
|
|
-
|
|
|
- if (scp->ssh_channel) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- if (conn->data->set.upload) {
|
|
|
- while ((rc = libssh2_channel_send_eof(scp->ssh_channel)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
-@@ -1248,7 +1266,7 @@
|
|
|
- }
|
|
|
-
|
|
|
- if (scp->ssh_session) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while (libssh2_session_disconnect(scp->ssh_session, "Shutdown") ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- #else /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
-@@ -1279,7 +1297,7 @@
|
|
|
- * NOTE: we should not store nor rely on connection-related data to be
|
|
|
- * in the SessionHandle struct
|
|
|
- */
|
|
|
--#if defined(LIBSSH2CHANNEL_EAGAIN) && (LIBSSH2_APINO < 200706012030)
|
|
|
-+#if defined(LIBSSH2CHANNEL_EAGAIN) && defined(LIBSSH2_APINO) && (LIBSSH2_APINO < 200706012030)
|
|
|
- nwrite = (ssize_t)
|
|
|
- libssh2_channel_writenb(conn->data->reqdata.proto.ssh->ssh_channel,
|
|
|
- mem, len);
|
|
|
-@@ -1287,7 +1305,7 @@
|
|
|
- nwrite = (ssize_t)
|
|
|
- libssh2_channel_write(conn->data->reqdata.proto.ssh->ssh_channel,
|
|
|
- mem, len);
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- if (nwrite == LIBSSH2_ERROR_EAGAIN) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-@@ -1313,7 +1331,7 @@
|
|
|
- * in the SessionHandle struct
|
|
|
- */
|
|
|
-
|
|
|
--#if defined(LIBSSH2CHANNEL_EAGAIN) && (LIBSSH2_APINO < 200706012030)
|
|
|
-+#if defined(LIBSSH2CHANNEL_EAGAIN) && defined(LIBSSH2_APINO) && (LIBSSH2_APINO < 200706012030)
|
|
|
- /* we prefer the non-blocking API but that didn't exist previously */
|
|
|
- nread = (ssize_t)
|
|
|
- libssh2_channel_readnb(conn->data->reqdata.proto.ssh->ssh_channel,
|
|
|
-@@ -1358,7 +1376,7 @@
|
|
|
- * If this is not done the destination file will be named the
|
|
|
- * same name as the last directory in the path.
|
|
|
- */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- do {
|
|
|
- sftp->sftp_handle =
|
|
|
- libssh2_sftp_open(sftp->sftp_session, sftp->path,
|
|
|
-@@ -1446,7 +1464,7 @@
|
|
|
- int len, totalLen, currLen;
|
|
|
- char *line;
|
|
|
-
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- do {
|
|
|
- sftp->sftp_handle =
|
|
|
- libssh2_sftp_opendir(sftp->sftp_session, sftp->path);
|
|
|
-@@ -1471,7 +1489,7 @@
|
|
|
- #endif /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
-
|
|
|
- do {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((len = libssh2_sftp_readdir(sftp->sftp_handle, filename,
|
|
|
- PATH_MAX, &attrs)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
-@@ -1589,7 +1607,7 @@
|
|
|
- char linkPath[PATH_MAX + 1];
|
|
|
-
|
|
|
- snprintf(linkPath, PATH_MAX, "%s%s", sftp->path, filename);
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((len = libssh2_sftp_readlink(sftp->sftp_session, linkPath,
|
|
|
- filename, PATH_MAX)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
-@@ -1614,7 +1632,7 @@
|
|
|
- break;
|
|
|
- }
|
|
|
- } while (1);
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while (libssh2_sftp_closedir(sftp->sftp_handle) == LIBSSH2_ERROR_EAGAIN);
|
|
|
- #else /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
- libssh2_sftp_closedir(sftp->sftp_handle);
|
|
|
-@@ -1628,7 +1646,7 @@
|
|
|
- /*
|
|
|
- * Work on getting the specified file
|
|
|
- */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- do {
|
|
|
- sftp->sftp_handle =
|
|
|
- libssh2_sftp_open(sftp->sftp_session, sftp->path, LIBSSH2_FXF_READ,
|
|
|
-@@ -1654,7 +1672,7 @@
|
|
|
- }
|
|
|
- #endif /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
-
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((rc = libssh2_sftp_stat(sftp->sftp_session, sftp->path, &attrs))
|
|
|
- == LIBSSH2_ERROR_EAGAIN);
|
|
|
- #else /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
-@@ -1686,7 +1704,7 @@
|
|
|
- bytecount, FALSE, NULL, -1, NULL);
|
|
|
- #endif
|
|
|
- while (res == CURLE_OK) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- ssize_t nread;
|
|
|
-
|
|
|
- while ((nread = libssh2_sftp_read(data->reqdata.proto.ssh->sftp_handle,
|
|
|
-@@ -1702,7 +1720,7 @@
|
|
|
- if (nread > 0)
|
|
|
- buf[nread] = 0;
|
|
|
-
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- if (nread <= 0)
|
|
|
- break;
|
|
|
- #else /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
-@@ -1753,7 +1771,7 @@
|
|
|
- sftp->homedir = NULL;
|
|
|
-
|
|
|
- if (sftp->sftp_handle) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_close(sftp->sftp_handle)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret < 0) {
|
|
|
-@@ -1773,7 +1791,7 @@
|
|
|
- }
|
|
|
-
|
|
|
- if (sftp->sftp_session) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_shutdown(sftp->sftp_session)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret < 0) {
|
|
|
-@@ -1787,7 +1805,7 @@
|
|
|
- }
|
|
|
-
|
|
|
- if (sftp->ssh_channel) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_channel_close(sftp->ssh_channel)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret < 0) {
|
|
|
-@@ -1801,7 +1819,7 @@
|
|
|
- }
|
|
|
-
|
|
|
- if (sftp->ssh_session) {
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while (libssh2_session_disconnect(sftp->ssh_session, "Shutdown") ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- #else /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
-@@ -1828,14 +1846,14 @@
|
|
|
- ssize_t nwrite; /* libssh2_sftp_write() used to return size_t in 0.14
|
|
|
- but is changed to ssize_t in 0.15! */
|
|
|
-
|
|
|
--#if defined(LIBSSH2SFTP_EAGAIN) && (LIBSSH2_APINO < 200706012030)
|
|
|
-+#if defined(LIBSSH2SFTP_EAGAIN) && defined(LIBSSH2_APINO) && (LIBSSH2_APINO < 200706012030)
|
|
|
- /* 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);
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- if (nwrite == LIBSSH2_ERROR_EAGAIN) {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-@@ -1857,7 +1875,7 @@
|
|
|
-
|
|
|
- /* libssh2_sftp_read() returns size_t !*/
|
|
|
-
|
|
|
--#if defined(LIBSSH2SFTP_EAGAIN) && (LIBSSH2_APINO < 200706012030)
|
|
|
-+#if defined(LIBSSH2SFTP_EAGAIN) && defined(LIBSSH2_APINO) && (LIBSSH2_APINO < 200706012030)
|
|
|
- /* we prefer the non-blocking API but that didn't exist previously */
|
|
|
- nread = (ssize_t)
|
|
|
- libssh2_sftp_readnb(conn->data->reqdata.proto.ssh->sftp_handle, mem, len);
|
|
|
-@@ -2058,7 +2076,7 @@
|
|
|
- return err;
|
|
|
- }
|
|
|
- memset(&attrs, 0, sizeof(LIBSSH2_SFTP_ATTRIBUTES));
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_stat(sftp_session,
|
|
|
- path2, &attrs)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
-@@ -2112,7 +2130,7 @@
|
|
|
- }
|
|
|
-
|
|
|
- /* Now send the completed structure... */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_setstat(sftp_session, path2, &attrs)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret != 0) {
|
|
|
-@@ -2148,7 +2166,7 @@
|
|
|
- free(path1);
|
|
|
- return err;
|
|
|
- }
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_symlink(sftp_session, path1, path2)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret != 0) {
|
|
|
-@@ -2171,7 +2189,7 @@
|
|
|
- #endif /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
- }
|
|
|
- else if (curl_strnequal(item->data, "mkdir ", 6)) { /* create dir */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_mkdir(sftp_session, path1, 0744)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret != 0) {
|
|
|
-@@ -2202,7 +2220,7 @@
|
|
|
- free(path1);
|
|
|
- return err;
|
|
|
- }
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_rename(sftp_session, path1, path2)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret != 0) {
|
|
|
-@@ -2225,7 +2243,7 @@
|
|
|
- #endif /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
- }
|
|
|
- else if (curl_strnequal(item->data, "rmdir ", 6)) { /* delete dir */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_rmdir(sftp_session, path1)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret != 0) {
|
|
|
-@@ -2246,7 +2264,7 @@
|
|
|
- #endif /* !(LIBSSH2_APINO >= 200706012030) */
|
|
|
- }
|
|
|
- else if (curl_strnequal(item->data, "rm ", 3)) { /* delete file */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((ret = libssh2_sftp_unlink(sftp_session, path1)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|
|
|
- if (ret != 0) {
|
|
|
-@@ -2296,7 +2314,7 @@
|
|
|
-
|
|
|
- infof(conn->data, "Creating directory '%s'\n", sftp->path);
|
|
|
- /* 'mode' - parameter is preliminary - default to 0644 */
|
|
|
--#if (LIBSSH2_APINO >= 200706012030)
|
|
|
-+#if HAVE_LIBSSH2_NBLOCK
|
|
|
- while ((rc = libssh2_sftp_mkdir(sftp->sftp_session, sftp->path,
|
|
|
- conn->data->set.new_directory_perms)) ==
|
|
|
- LIBSSH2_ERROR_EAGAIN);
|