close resolvers properly

This commit is contained in:
Vladislav Yarmak
2024-08-01 18:22:11 +03:00
parent 2e3cf20184
commit 58e16661fe
4 changed files with 24 additions and 0 deletions
+14
View File
@@ -3,10 +3,12 @@ package main
import (
"context"
"fmt"
"io"
"net/netip"
"time"
"github.com/AdguardTeam/dnsproxy/upstream"
"github.com/hashicorp/go-multierror"
)
type Resolver struct {
@@ -36,3 +38,15 @@ func NewResolver(addresses []string, timeout time.Duration) (*Resolver, error) {
func (r *Resolver) LookupNetIP(ctx context.Context, network string, host string) (addrs []netip.Addr, err error) {
return r.resolvers.LookupNetIP(ctx, network, host)
}
func (r *Resolver) Close() error {
var res error
for _, resolver := range r.resolvers {
if closer, ok := resolver.(io.Closer); ok {
if err := closer.Close(); err != nil {
res = multierror.Append(res, err)
}
}
}
return res
}