Changelog
Daniel Stenberg (22 Dec 2008)
+- Given a recent enough libssh2, libcurl can now seek/resume with SFTP even
+ on file indexes beyond 2 or 4GB.
- Anthony Bryan provided a set of patches that cleaned up manual language,
corrected spellings and more.
o curl_multi_timeout() no longer returns timeout 0 when there's nothing to do
yet
o the multi_socket API and HTTP pipelining now work a lot better when combined
+ o SFTP seek/resume beyond 32bit file sizes
This release includes the following known bugs:
return CURLE_OK;
}
+/*
+ * Earlier libssh2 versions didn't have the ability to seek to 64bit positions
+ * with 32bit size_t.
+ */
+#ifdef HAVE_LIBSSH2_SFTP_SEEK2
+#define SFTP_SEEK(x,y) libssh2_sftp_seek2(x, (libssh2_uint64_t)y)
+#else
+#define SFTP_SEEK(x,y) libssh2_sftp_seek(x, y)
+#endif
+
/*
* ssh_statemach_act() runs the SSH statemachine "one round" and returns. The
* data the pointer 'block' points to will be set to TRUE if the libssh2
Curl_pgrsSetUploadSize(data, data->set.infilesize);
}
- libssh2_sftp_seek(sshc->sftp_handle, data->state.resume_from);
+ SFTP_SEEK(sshc->sftp_handle, data->state.resume_from);
}
if(data->set.infilesize>0) {
data->req.size = data->set.infilesize;
size = to - from + 1;
}
- libssh2_sftp_seek(conn->proto.sshc.sftp_handle, from);
+ SFTP_SEEK(conn->proto.sshc.sftp_handle, from);
}
data->req.size = size;
data->req.maxdownload = size;
data->req.maxdownload = attrs.filesize - data->state.resume_from;
Curl_pgrsSetDownloadSize(data,
attrs.filesize - data->state.resume_from);
- libssh2_sftp_seek(sshc->sftp_handle, data->state.resume_from);
+ SFTP_SEEK(sshc->sftp_handle, data->state.resume_from);
}
}
/* Setup the actual download */