SCP: use libssh2_scp_recv2 to support > 2GB files on windows
libssh2_scp_recv2 is introduced in libssh2 1.7.0 - to be released "any day now. Closes #451
This commit is contained in:
Родитель
078753c40d
Коммит
cae21ffc16
19
lib/ssh.c
19
lib/ssh.c
|
@ -2371,19 +2371,30 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
||||||
|
|
||||||
case SSH_SCP_DOWNLOAD_INIT:
|
case SSH_SCP_DOWNLOAD_INIT:
|
||||||
{
|
{
|
||||||
|
curl_off_t bytecount;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We must check the remote file; if it is a directory no values will
|
* We must check the remote file; if it is a directory no values will
|
||||||
* be set in sb
|
* be set in sb
|
||||||
*/
|
*/
|
||||||
struct stat sb;
|
|
||||||
curl_off_t bytecount;
|
|
||||||
|
|
||||||
/* clear the struct scp recv will fill in */
|
/*
|
||||||
memset(&sb, 0, sizeof(struct stat));
|
* If support for >2GB files exists, use it.
|
||||||
|
*/
|
||||||
|
|
||||||
/* get a fresh new channel from the ssh layer */
|
/* get a fresh new channel from the ssh layer */
|
||||||
|
#if LIBSSH2_VERSION_NUM < 0x010700
|
||||||
|
struct stat sb;
|
||||||
|
memset(&sb, 0, sizeof(struct stat));
|
||||||
sshc->ssh_channel = libssh2_scp_recv(sshc->ssh_session,
|
sshc->ssh_channel = libssh2_scp_recv(sshc->ssh_session,
|
||||||
sftp_scp->path, &sb);
|
sftp_scp->path, &sb);
|
||||||
|
#else
|
||||||
|
libssh2_struct_stat sb;
|
||||||
|
memset(&sb, 0, sizeof(libssh2_struct_stat));
|
||||||
|
sshc->ssh_channel = libssh2_scp_recv2(sshc->ssh_session,
|
||||||
|
sftp_scp->path, &sb);
|
||||||
|
#endif
|
||||||
|
|
||||||
if(!sshc->ssh_channel) {
|
if(!sshc->ssh_channel) {
|
||||||
if(libssh2_session_last_errno(sshc->ssh_session) ==
|
if(libssh2_session_last_errno(sshc->ssh_session) ==
|
||||||
LIBSSH2_ERROR_EAGAIN) {
|
LIBSSH2_ERROR_EAGAIN) {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче