From befed39a6f627366f1619eecf26e76ad1b7ff166 Mon Sep 17 00:00:00 2001 From: Joe Turki Date: Sun, 26 Jan 2025 21:13:44 -0600 Subject: [PATCH] Refactor addrFromAnswerHeader logic with a switch Replaced the if-else structure with a switch statement for better readability and future extensibility, Added a default case to handle unsupported record types explicitly (Never happens) --- conn.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/conn.go b/conn.go index d300163..7211ac5 100644 --- a/conn.go +++ b/conn.go @@ -1171,7 +1171,8 @@ func (c *Conn) start(started chan<- struct{}, inboundBufferSize int, config *Con } func addrFromAnswerHeader(a dnsmessage.ResourceHeader, p dnsmessage.Parser) (addr *netip.Addr, err error) { - if a.Type == dnsmessage.TypeA { + switch a.Type { + case dnsmessage.TypeA: resource, err := p.AResource() if err != nil { return nil, err @@ -1181,8 +1182,9 @@ func addrFromAnswerHeader(a dnsmessage.ResourceHeader, p dnsmessage.Parser) (add return nil, fmt.Errorf("failed to convert A record: %w", ipToAddrError{resource.A[:]}) } ipAddr = ipAddr.Unmap() // do not want 4-in-6 - addr = &ipAddr - } else { + + return &ipAddr, nil + case dnsmessage.TypeAAAA: resource, err := p.AAAAResource() if err != nil { return nil, err @@ -1191,10 +1193,11 @@ func addrFromAnswerHeader(a dnsmessage.ResourceHeader, p dnsmessage.Parser) (add if !ok { return nil, fmt.Errorf("failed to convert AAAA record: %w", ipToAddrError{resource.AAAA[:]}) } - addr = &ipAddr - } - return + return &ipAddr, nil + default: + return nil, fmt.Errorf("unsupported record type %d", a.Type) //nolint:err113 // Never happens + } } func isSupportedIPv6(addr netip.Addr, ipv6Only bool) bool {