mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-28 09:37:10 -04:00
Merge branch '4005-handle-ISC_R_INVALIDPROTO-from-libuv-9.18' into 'bind-9.18'
[9.18] Handle ISC_R_INVALIDPROTO in the dispatch See merge request isc-projects/bind9!7861
This commit is contained in:
commit
cf6a8987b3
6 changed files with 17 additions and 6 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
6155. [bug] Treat ISC_R_INVALIDPROTO as a networking error
|
||||
in the dispatch code to avoid retrying with the
|
||||
same server. [GL #4005]<
|
||||
|
||||
6149. [test] As a workaround, include an OpenSSL header file before
|
||||
including cmocka.h in the unit tests, because OpenSSL
|
||||
3.1.0 uses __attribute__(malloc), conflicting with a
|
||||
|
|
|
|||
|
|
@ -35,7 +35,9 @@ Feature Changes
|
|||
Bug Fixes
|
||||
~~~~~~~~~
|
||||
|
||||
- None.
|
||||
- When ISC_R_INVALIDPROTO (ENOPROTOOPT, EPROTONOSUPPORT) is returned from
|
||||
libuv, treat it as a network failure, mark the server as broken and don't
|
||||
try again. :gl:`#4005`
|
||||
|
||||
Known Issues
|
||||
~~~~~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -8178,6 +8178,7 @@ rctx_dispfail(respctx_t *rctx) {
|
|||
case ISC_R_NETUNREACH:
|
||||
case ISC_R_CONNREFUSED:
|
||||
case ISC_R_CONNECTIONRESET:
|
||||
case ISC_R_INVALIDPROTO:
|
||||
case ISC_R_CANCELED:
|
||||
case ISC_R_SHUTTINGDOWN:
|
||||
rctx->broken_server = rctx->result;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in a new issue