error code mappings
authorDaniel Kouřil <kouril@ics.muni.cz>
Thu, 19 Jan 2012 08:25:56 +0000 (08:25 +0000)
committerDaniel Kouřil <kouril@ics.muni.cz>
Thu, 19 Jan 2012 08:25:56 +0000 (08:25 +0000)
emi.canl.canl-c/src/canl_err.c
emi.canl.canl-c/src/canl_error_codes
emi.canl.canl-c/src/canl_locl.h

index 1036874..35570a7 100644 (file)
@@ -214,31 +214,40 @@ canl_get_error_message(canl_ctx cc)
   TODO go through ssl errors and assign appr. canl code
   ?preserve original one? */
 static canl_err_code resolve_error(glb_ctx *cc, unsigned long err_code, 
-        canl_err_origin err_orig)
+                                  canl_err_origin err_orig)
 {
-    if (err_orig == CANL_ERROR) {
-        cc->err_code = err_code;
-        cc->err_orig = CANL_ERROR;
-        return (int)err_code;
-    }
-    if (err_orig == POSIX_ERROR) {
-        cc->err_code = err_code;
-        cc->err_orig = POSIX_ERROR;
-        return (int)err_code;
-    }
-    if (err_orig == NETDB_ERROR) {
-        cc->err_code = err_code;
-        cc->err_orig = NETDB_ERROR;
-        return (int)err_code;
-    }
-
-    switch (err_code) {
-       /*TODO map SSL_ERRORs on canl errors*/
-        default:
-            cc->err_code = err_code;
-            cc->err_orig = err_orig;
-            break;
+    cc->original_err_code = err_code;
+    cc->err_orig = err_orig;
+
+    switch (err_orig) {
+       case UNKNOWN_ERROR:
+           cc->err_code = (err_code) ? CANL_ERR_unknown : 0;
+           break;
+       case POSIX_ERROR:
+           /* We don't use that many posix-like codes, perhaps we want to
+            * map them to CANL codes. */
+           cc->err_code = err_code;
+           break;
+       case SSL_ERROR:
+           /* XXX Add mapping based on canl_err_desc.c */
+           cc->err_code = CANL_ERR_GeneralSSLError;
+           break;
+       case CANL_ERROR:
+           cc->err_code = err_code;
+           break;
+       case NETDB_ERROR:
+           switch (cc->err_code) {
+               case HOST_NOT_FOUND:
+                   cc->err_code = CANL_ERR_HostNotFound;
+                   break;
+               default:
+                   cc->err_code = CANL_ERR_ResolverError;
+                   break;
+           }
+           break;
+       default:
+           cc->err_code = CANL_ERR_unknown;
     }
 
-    return 1; //TODO return ssl generic error - add it to canl_error_codes,desc
+    return cc->err_code;
 }
index 179301e..acaf883 100644 (file)
@@ -100,3 +100,6 @@ totalPathLength
 trustAnchorIssuerError
 trustDNInvalid
 trustPubKeyError
+GeneralSSLError
+HostNotFound
+ResolverError
index 85eba86..cfcbdcb 100644 (file)
@@ -60,7 +60,9 @@ typedef struct _glb_ctx
 {
     char * err_msg;
     canl_err_code err_code;
+    /* XXX Do we need to keep these two:? */
     canl_err_origin err_orig;
+    long original_err_code;
     cert_key_store *cert_key;
 } glb_ctx;