From 2a714c25f8927a8f214cd2b5b04f710839232baf Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Wed, 5 Apr 2023 14:05:46 -0700 Subject: [PATCH] add a result code for ENOPROTOOPT, EPROTONOSUPPORT there was no isc_result_t value for invalid protocol errors that could be returned from libuv. (cherry picked from commit 0393b54afbe1c4e08691698b05442d0db8b31a4b) --- lib/isc/include/isc/result.h | 1 + lib/isc/netmgr/uverr2result.c | 12 +++++++----- lib/isc/result.c | 1 + 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/isc/include/isc/result.h b/lib/isc/include/isc/result.h index 1b5941178c..5d5195b38f 100644 --- a/lib/isc/include/isc/result.h +++ b/lib/isc/include/isc/result.h @@ -95,6 +95,7 @@ typedef enum isc_result { ISC_R_TLSBADPEERCERT, /*%< TLS peer certificate verification failed */ ISC_R_HTTP2ALPNERROR, /*%< ALPN for HTTP/2 failed */ ISC_R_DOTALPNERROR, /*%< ALPN for DoT failed */ + ISC_R_INVALIDPROTO, /*%< invalid protocol */ DNS_R_LABELTOOLONG = 1 << 16, DNS_R_BADESCAPE, diff --git a/lib/isc/netmgr/uverr2result.c b/lib/isc/netmgr/uverr2result.c index 99ed1b3aa9..9f16ea8271 100644 --- a/lib/isc/netmgr/uverr2result.c +++ b/lib/isc/netmgr/uverr2result.c @@ -90,13 +90,15 @@ isc___nm_uverr2result(int uverr, bool dolog, const char *file, return (ISC_R_MAXSIZE); case UV_ENOTSUP: return (ISC_R_FAMILYNOSUPPORT); + case UV_ENOPROTOOPT: + case UV_EPROTONOSUPPORT: + return (ISC_R_INVALIDPROTO); default: if (dolog) { - UNEXPECTED_ERROR( - file, line, - "unable to convert libuv " - "error code in %s to isc_result: %d: %s", - func, uverr, uv_strerror(uverr)); + UNEXPECTED_ERROR("unable to convert libuv error code " + "in %s (%s:%d) to isc_result: %d: %s", + func, file, line, uverr, + uv_strerror(uverr)); } return (ISC_R_UNEXPECTED); } diff --git a/lib/isc/result.c b/lib/isc/result.c index 24a0053511..f01df3e817 100644 --- a/lib/isc/result.c +++ b/lib/isc/result.c @@ -94,6 +94,7 @@ static const char *description[ISC_R_NRESULTS] = { [ISC_R_TLSBADPEERCERT] = "TLS peer certificate verification failed", [ISC_R_HTTP2ALPNERROR] = "ALPN for HTTP/2 failed", [ISC_R_DOTALPNERROR] = "ALPN for DoT failed", + [ISC_R_INVALIDPROTO] = "invalid protocol", [DNS_R_LABELTOOLONG] = "label too long", [DNS_R_BADESCAPE] = "bad escape",