summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Danzberger <daniel@dd-wrt.com>2019-12-05 17:51:58 +0100
committerHauke Mehrtens <hauke@hauke-m.de>2019-12-07 15:00:12 +0100
commitfef6d3d311ac45c662c01e0ebd9cb0f6c8d7145c (patch)
tree613c645b2f79e6e579cbd5f8ce2462f15137b0cb
parent3b3e368dead01979e985cb167873fe9868b15d19 (diff)
downloaduclient-fef6d3d311ac45c662c01e0ebd9cb0f6c8d7145c.tar.gz
uclient: Add string error function
This add's the uclient_strerror function, which resolves and error code to a string message. Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
-rw-r--r--uclient.c20
-rw-r--r--uclient.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/uclient.c b/uclient.c
index 1137168..9f98cbc 100644
--- a/uclient.c
+++ b/uclient.c
@@ -422,3 +422,23 @@ void __hidden uclient_backend_reset_state(struct uclient *cl)
cl->error_code = 0;
uloop_timeout_cancel(&cl->timeout);
}
+
+const char * uclient_strerror(unsigned err)
+{
+ switch (err) {
+ case UCLIENT_ERROR_UNKNOWN:
+ return "unknown error";
+ case UCLIENT_ERROR_CONNECT:
+ return "connect failed";
+ case UCLIENT_ERROR_TIMEDOUT:
+ return "timeout";
+ case UCLIENT_ERROR_SSL_INVALID_CERT:
+ return "ssl invalid cert";
+ case UCLIENT_ERROR_SSL_CN_MISMATCH:
+ return "ssl cn mismatch";
+ case UCLIENT_ERROR_MISSING_SSL_CONTEXT:
+ return "missing ssl context";
+ default:
+ return "invalid error code";
+ }
+}
diff --git a/uclient.h b/uclient.h
index e3695db..4f37364 100644
--- a/uclient.h
+++ b/uclient.h
@@ -36,6 +36,7 @@ enum uclient_error_code {
UCLIENT_ERROR_SSL_INVALID_CERT,
UCLIENT_ERROR_SSL_CN_MISMATCH,
UCLIENT_ERROR_MISSING_SSL_CONTEXT,
+ __UCLIENT_ERROR_MAX
};
union uclient_addr {
@@ -126,5 +127,6 @@ int uclient_http_redirect(struct uclient *cl);
int uclient_http_set_ssl_ctx(struct uclient *cl, const struct ustream_ssl_ops *ops,
struct ustream_ssl_ctx *ctx, bool require_validation);
int uclient_http_set_address_family(struct uclient *cl, int af);
+const char *uclient_strerror(unsigned err);
#endif