(ctx context.Context, q query.Query, buf []byte)
| 170 | } |
| 171 | |
| 172 | func (p Proxy) Resolve(ctx context.Context, q query.Query, buf []byte) (n int, i resolver.ResolveInfo, err error) { |
| 173 | if p.LocalResolver != nil { |
| 174 | if _n, _i, _err := hostsResolve(p.LocalResolver, q, buf); _err == nil { |
| 175 | return _n, _i, nil |
| 176 | } |
| 177 | } |
| 178 | |
| 179 | priv := q.Type == query.TypePTR && isPrivateReverse(q.Name) |
| 180 | |
| 181 | if !p.BogusPriv || !priv { |
| 182 | n, i, err = p.Upstream.Resolve(ctx, q, buf) |
| 183 | } |
| 184 | |
| 185 | if q.RecursionDesired && p.DiscoveryResolver != nil && (n <= 0 || isNXDomain(buf[:n])) { |
| 186 | if _n, _i, _err := hostsResolve(p.DiscoveryResolver, q, buf); _err == nil { |
| 187 | return _n, _i, nil |
| 188 | } |
| 189 | } |
| 190 | |
| 191 | if p.BogusPriv && priv { |
| 192 | n = replyRCode(dnsmessage.RCodeNameError, q, buf) |
| 193 | return n, i, nil |
| 194 | } |
| 195 | |
| 196 | return n, i, err |
| 197 | } |
| 198 | |
| 199 | func (p Proxy) maxInflightRequests() int { |
| 200 | if p.MaxInflightRequests == 0 { |
no test coverage detected