From 55c19afb0b98eb35afb491cbaaff107e10cb25e2 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Sat, 7 Mar 2020 21:28:48 +0300 Subject: [PATCH] registry/mdns: fix ipv6 addr in mdns registry Signed-off-by: Vasiliy Tolstov --- registry/mdns_registry.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/registry/mdns_registry.go b/registry/mdns_registry.go index fe952d22..44bb6c47 100644 --- a/registry/mdns_registry.go +++ b/registry/mdns_registry.go @@ -148,7 +148,6 @@ func (m *mdnsRegistry) Register(service *Service, opts ...RegisterOption) error continue } - // host, pt, err := net.SplitHostPort(node.Address) if err != nil { gerr = err @@ -270,10 +269,20 @@ func (m *mdnsRegistry) GetService(service string) ([]*Service, error) { Endpoints: txt.Endpoints, } } - + addr := "" + // prefer ipv4 addrs + if e.AddrV4 != nil { + addr = e.AddrV4.String() + // else use ipv6 + } else if e.AddrV6 != nil { + addr = "[" + e.AddrV6.String() + "]" + } else { + // broken endpoint + continue + } s.Nodes = append(s.Nodes, &Node{ Id: strings.TrimSuffix(e.Name, "."+p.Service+"."+p.Domain+"."), - Address: fmt.Sprintf("%s:%d", e.AddrV4.String(), e.Port), + Address: fmt.Sprintf("%s:%d", addr, e.Port), Metadata: txt.Metadata, })