diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/ssh.c | 32 | 
1 files changed, 30 insertions, 2 deletions
@@ -264,8 +264,36 @@ static CURLcode sftp_libssh2_error_to_CURLE(int err)  static CURLcode libssh2_session_error_to_CURLE(int err)  { -  if(err == LIBSSH2_ERROR_ALLOC) -    return CURLE_OUT_OF_MEMORY; +  switch (err) { +    /* Ordered by order of appearance in libssh2.h */ +    case LIBSSH2_ERROR_NONE: +      return CURLE_OK; + +    case LIBSSH2_ERROR_SOCKET_NONE: +      return CURLE_COULDNT_CONNECT; + +    case LIBSSH2_ERROR_ALLOC: +      return CURLE_OUT_OF_MEMORY; + +    case LIBSSH2_ERROR_SOCKET_SEND: +      return CURLE_SEND_ERROR; + +    case LIBSSH2_ERROR_HOSTKEY_INIT: +    case LIBSSH2_ERROR_HOSTKEY_SIGN: +    case LIBSSH2_ERROR_PUBLICKEY_UNRECOGNIZED: +    case LIBSSH2_ERROR_PUBLICKEY_UNVERIFIED: +      return CURLE_PEER_FAILED_VERIFICATION; + +    case LIBSSH2_ERROR_PASSWORD_EXPIRED: +      return CURLE_LOGIN_DENIED; + +    case LIBSSH2_ERROR_SOCKET_TIMEOUT: +    case LIBSSH2_ERROR_TIMEOUT: +      return CURLE_OPERATION_TIMEDOUT; + +    case LIBSSH2_ERROR_EAGAIN: +      return CURLE_AGAIN; +  }    /* TODO: map some more of the libssh2 errors to the more appropriate CURLcode       error code, and possibly add a few new SSH-related one. We must however  | 
