mirror of
https://github.com/nginx/nginx.git
synced 2025-06-06 00:42:40 +08:00
Resolver: report SRV resolve failure if all A resolves failed.
Previously, if an SRV record was successfully resolved, but all of its A records failed to resolve, NXDOMAIN was returned to the caller, which is considered a successful resolve rather than an error. This could result in losing the result of a previous successful resolve by the caller. Now NXDOMAIN is only returned if at least one A resolve completed with this code. Otherwise the error state of the first A resolve is returned.
This commit is contained in:
parent
746fba0d79
commit
8e2949e56a
@ -4266,7 +4266,15 @@ ngx_resolver_report_srv(ngx_resolver_t *r, ngx_resolver_ctx_t *ctx)
|
||||
}
|
||||
|
||||
if (naddrs == 0) {
|
||||
ctx->state = NGX_RESOLVE_NXDOMAIN;
|
||||
ctx->state = srvs[0].state;
|
||||
|
||||
for (i = 0; i < nsrvs; i++) {
|
||||
if (srvs[i].state == NGX_RESOLVE_NXDOMAIN) {
|
||||
ctx->state = NGX_RESOLVE_NXDOMAIN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ctx->valid = ngx_time() + (r->valid ? r->valid : 10);
|
||||
|
||||
ctx->handler(ctx);
|
||||
|
Loading…
Reference in New Issue
Block a user