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:
|
||||
{
|
||||
curl_off_t bytecount;
|
||||
|
||||
/*
|
||||
* We must check the remote file; if it is a directory no values will
|
||||
* 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 */
|
||||
#if LIBSSH2_VERSION_NUM < 0x010700
|
||||
struct stat sb;
|
||||
memset(&sb, 0, sizeof(struct stat));
|
||||
sshc->ssh_channel = libssh2_scp_recv(sshc->ssh_session,
|
||||
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(libssh2_session_last_errno(sshc->ssh_session) ==
|
||||
LIBSSH2_ERROR_EAGAIN) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче