From d0b3da94941080f250a5588601fe508d966b6ab4 Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 02:49:27 +0000 Subject: [PATCH] fix(dns): add runtime address alias Co-Authored-By: Virgil --- serve.go | 21 +++++++++++++++++---- service_test.go | 3 +++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/serve.go b/serve.go index 7297f27..e61c805 100644 --- a/serve.go +++ b/serve.go @@ -36,6 +36,15 @@ type ServiceRuntime struct { HTTP *HealthServer } +// Address is the compatibility alias for HealthAddress. +// +// runtime, err := service.ServeAll("127.0.0.1", 53, 5554) +// defer func() { _ = runtime.Close() }() +// fmt.Println(runtime.Address()) +func (runtime *ServiceRuntime) Address() string { + return runtime.HealthAddress() +} + func (runtime *ServiceRuntime) DNSAddress() string { if runtime == nil || runtime.DNS == nil { return "" @@ -104,14 +113,18 @@ func (server *DNSServer) Close() error { if server.tcpListener != nil { _ = server.tcpListener.Close() } - var err error + var firstError error if server.udpServer != nil { - err = server.udpServer.Shutdown() + if err := server.udpServer.Shutdown(); err != nil && firstError == nil { + firstError = err + } } if server.tcpServer != nil { - err = server.tcpServer.Shutdown() + if err := server.tcpServer.Shutdown(); err != nil && firstError == nil { + firstError = err + } } - return err + return firstError } // ResolveDNSPort returns the DNS port used for `dns.serve` and `Serve`. diff --git a/service_test.go b/service_test.go index e4640ff..d558309 100644 --- a/service_test.go +++ b/service_test.go @@ -761,6 +761,9 @@ func TestServiceServeAllStartsDNSAndHTTPTogether(t *testing.T) { if runtime.HealthAddress() == "" { t.Fatal("expected health address from combined runtime") } + if runtime.Address() != runtime.HealthAddress() { + t.Fatalf("expected runtime Address alias to match HealthAddress, got %q and %q", runtime.Address(), runtime.HealthAddress()) + } if runtime.DNS.Address() != runtime.DNSAddress() { t.Fatalf("expected DNSAddress and Address to match, got %q and %q", runtime.DNS.DNSAddress(), runtime.DNS.Address()) }