]> granicus.if.org Git - curl/commitdiff
Andre Guibert de Bruet improved the libssh2 error code translation
authorDaniel Stenberg <daniel@haxx.se>
Tue, 26 Jan 2010 12:25:03 +0000 (12:25 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 26 Jan 2010 12:25:03 +0000 (12:25 +0000)
lib/ssh.c

index 71a8de386e4eae5641a91c81004fdd73acfa4046..edc89fde8f18a7ad14551867ca4c6b9f753a65b5 100644 (file)
--- a/lib/ssh.c
+++ b/lib/ssh.c
@@ -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