From 8e5a0c4d5545f5f65c90d21107c8f88fc6ee6b94 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Kou=C5=99il?= Date: Thu, 19 Jan 2012 08:25:56 +0000 Subject: [PATCH] error code mappings --- emi.canl.canl-c/src/canl_err.c | 57 +++++++++++++++++++++--------------- emi.canl.canl-c/src/canl_error_codes | 3 ++ emi.canl.canl-c/src/canl_locl.h | 2 ++ 3 files changed, 38 insertions(+), 24 deletions(-) diff --git a/emi.canl.canl-c/src/canl_err.c b/emi.canl.canl-c/src/canl_err.c index 1036874..35570a7 100644 --- a/emi.canl.canl-c/src/canl_err.c +++ b/emi.canl.canl-c/src/canl_err.c @@ -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; } diff --git a/emi.canl.canl-c/src/canl_error_codes b/emi.canl.canl-c/src/canl_error_codes index 179301e..acaf883 100644 --- a/emi.canl.canl-c/src/canl_error_codes +++ b/emi.canl.canl-c/src/canl_error_codes @@ -100,3 +100,6 @@ totalPathLength trustAnchorIssuerError trustDNInvalid trustPubKeyError +GeneralSSLError +HostNotFound +ResolverError diff --git a/emi.canl.canl-c/src/canl_locl.h b/emi.canl.canl-c/src/canl_locl.h index 85eba86..cfcbdcb 100644 --- a/emi.canl.canl-c/src/canl_locl.h +++ b/emi.canl.canl-c/src/canl_locl.h @@ -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; -- 1.8.2.3