diff options
| -rw-r--r-- | lib/ssh.c | 19 | 
1 files changed, 15 insertions, 4 deletions
@@ -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) {  | 
