From 96597f30985e44a83bde000bf70afe4a426e476b Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 19 May 2026 17:36:43 +0200 Subject: [PATCH] daemon/libnetwork: Network.ResolveService: slight optimization - use strings.Cut to avoid strings.Split + strings.Join - move vars closer to where used Signed-off-by: Sebastiaan van Stijn --- daemon/libnetwork/network.go | 20 ++++++++++---------- daemon/libnetwork/resolver.go | 12 ++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/daemon/libnetwork/network.go b/daemon/libnetwork/network.go index 5d81dc27d3..1c66bacfb0 100644 --- a/daemon/libnetwork/network.go +++ b/daemon/libnetwork/network.go @@ -2005,22 +2005,20 @@ func (n *Network) ResolveIP(_ context.Context, ip string) string { func (n *Network) ResolveService(ctx context.Context, name string) ([]*net.SRV, []net.IP) { c := n.getController() - srv := []*net.SRV{} - ip := []net.IP{} - log.G(ctx).Debugf("Service name To resolve: %v", name) // There are DNS implementations that allow SRV queries for names not in - // the format defined by RFC 2782. Hence specific validations checks are - // not done - parts := strings.Split(name, ".") - if len(parts) < 3 { + // the format defined by RFC 2782. Hence specific validation checks are + // not done. + portName, protoService, ok := strings.Cut(name, ".") + if !ok { return nil, nil } - portName := parts[0] - proto := parts[1] - svcName := strings.Join(parts[2:], ".") + proto, svcName, ok := strings.Cut(protoService, ".") + if !ok { + return nil, nil + } networkID := n.ID() c.mu.Lock() @@ -2036,6 +2034,8 @@ func (n *Network) ResolveService(ctx context.Context, name string) ([]*net.SRV, return nil, nil } + srv := []*net.SRV{} + ip := []net.IP{} for _, svc := range svcs { if svc.portName != portName { continue diff --git a/daemon/libnetwork/resolver.go b/daemon/libnetwork/resolver.go index 74afd00649..b458326b41 100644 --- a/daemon/libnetwork/resolver.go +++ b/daemon/libnetwork/resolver.go @@ -397,11 +397,6 @@ func (r *Resolver) handleSRVQuery(ctx context.Context, query *dns.Msg) (*dns.Msg } func (r *Resolver) serveDNS(w dns.ResponseWriter, query *dns.Msg) { - var ( - resp *dns.Msg - err error - ) - if query == nil || len(query.Question) == 0 { return } @@ -415,6 +410,11 @@ func (r *Resolver) serveDNS(w dns.ResponseWriter, query *dns.Msg) { )) defer span.End() + var ( + resp *dns.Msg + err error + ) + switch queryType { case dns.TypeA: resp, err = r.handleIPQuery(ctx, query, types.IPv4) @@ -431,7 +431,7 @@ func (r *Resolver) serveDNS(w dns.ResponseWriter, query *dns.Msg) { } reply := func(msg *dns.Msg) { - if err = w.WriteMsg(msg); err != nil { + if err := w.WriteMsg(msg); err != nil { r.log(ctx).WithError(err).Error("[resolver] failed to write response") span.RecordError(err) span.SetStatus(codes.Error, "WriteMsg failed")