fix(dns): add runtime address alias

Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
Virgil 2026-04-04 02:49:27 +00:00
parent 0be2f529a0
commit d0b3da9494
2 changed files with 20 additions and 4 deletions

View file

@ -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`.

View file

@ -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())
}