[agent/codex:gpt-5.4-mini] Read docs/RFC.md fully. Find ONE feature described in the sp... #67

Merged
Virgil merged 1 commit from main into dev 2026-04-03 22:28:58 +00:00
3 changed files with 26 additions and 15 deletions

View file

@ -9,24 +9,27 @@ import (
"time"
)
// HTTPServer owns the health endpoint listener and server.
// HealthServer owns the `/health` listener and server.
//
// server, err := service.ServeHTTPHealth("127.0.0.1", 5554)
// defer func() { _ = server.Close() }()
// fmt.Println("health at", server.Address())
type HTTPServer struct {
type HealthServer struct {
listener net.Listener
server *http.Server
}
func (server *HTTPServer) Address() string {
// HTTPServer is kept as a compatibility alias for HealthServer.
type HTTPServer = HealthServer
func (server *HealthServer) Address() string {
if server == nil || server.listener == nil {
return ""
}
return server.listener.Addr().String()
}
func (server *HTTPServer) Close() error {
func (server *HealthServer) Close() error {
if server == nil {
return nil
}
@ -52,7 +55,7 @@ func (server *HTTPServer) Close() error {
// server, err := service.ServeHTTPHealth("127.0.0.1", 5554)
// defer func() { _ = server.Close() }()
// resp, _ := http.Get("http://" + server.Address() + "/health")
func (service *Service) ServeHTTPHealth(bind string, port int) (*HTTPServer, error) {
func (service *Service) ServeHTTPHealth(bind string, port int) (*HealthServer, error) {
if bind == "" {
bind = "127.0.0.1"
}
@ -78,7 +81,7 @@ func (service *Service) ServeHTTPHealth(bind string, port int) (*HTTPServer, err
Handler: mux,
}
httpServer := &HTTPServer{
httpServer := &HealthServer{
listener: listener,
server: server,
}

View file

@ -23,14 +23,14 @@ type DNSServer struct {
tcpServer *dnsprotocol.Server
}
// ServiceRuntime owns the DNS and HTTP listeners created by ServeAll.
// ServiceRuntime owns the DNS and health listeners created by ServeAll.
//
// runtime, err := service.ServeAll("127.0.0.1", 53, 5554)
// defer func() { _ = runtime.Close() }()
// fmt.Println(runtime.DNSAddress(), runtime.HTTPAddress())
// fmt.Println(runtime.DNSAddress(), runtime.HealthAddress())
type ServiceRuntime struct {
DNS *DNSServer
HTTP *HTTPServer
HTTP *HealthServer
}
func (runtime *ServiceRuntime) DNSAddress() string {
@ -40,13 +40,18 @@ func (runtime *ServiceRuntime) DNSAddress() string {
return runtime.DNS.Address()
}
func (runtime *ServiceRuntime) HTTPAddress() string {
func (runtime *ServiceRuntime) HealthAddress() string {
if runtime == nil || runtime.HTTP == nil {
return ""
}
return runtime.HTTP.Address()
}
// HTTPAddress is retained for compatibility with older call sites.
func (runtime *ServiceRuntime) HTTPAddress() string {
return runtime.HealthAddress()
}
func (runtime *ServiceRuntime) Close() error {
if runtime == nil {
return nil
@ -140,7 +145,7 @@ func (service *Service) Serve(bind string, port int) (*DNSServer, error) {
//
// runtime, err := service.ServeAll("127.0.0.1", 53, 5554)
// defer func() { _ = runtime.Close() }()
// fmt.Println("dns:", runtime.DNSAddress(), "health:", runtime.HTTPAddress())
// fmt.Println("dns:", runtime.DNSAddress(), "health:", runtime.HealthAddress())
func (service *Service) ServeAll(bind string, dnsPort int, httpPort int) (*ServiceRuntime, error) {
if dnsPort == 0 {
dnsPort = service.dnsPort

View file

@ -461,11 +461,14 @@ func TestServiceServeAllStartsDNSAndHTTPTogether(t *testing.T) {
if runtime.DNSAddress() == "" {
t.Fatal("expected DNS address from combined runtime")
}
if runtime.HTTPAddress() == "" {
t.Fatal("expected HTTP address from combined runtime")
if runtime.HealthAddress() == "" {
t.Fatal("expected health address from combined runtime")
}
if runtime.HTTPAddress() != runtime.HealthAddress() {
t.Fatalf("expected HTTPAddress and HealthAddress to match, got %q and %q", runtime.HTTPAddress(), runtime.HealthAddress())
}
response, err := http.Get("http://" + runtime.HTTPAddress() + "/health")
response, err := http.Get("http://" + runtime.HealthAddress() + "/health")
if err != nil {
t.Fatalf("expected combined HTTP health endpoint to respond: %v", err)
}
@ -519,7 +522,7 @@ func TestServiceServeConfiguredUsesPortsFromServiceOptions(t *testing.T) {
t.Fatalf("expected configured DNS port %d, got %s", dnsPort, dnsActualPort)
}
_, httpActualPort, err := net.SplitHostPort(runtime.HTTPAddress())
_, httpActualPort, err := net.SplitHostPort(runtime.HealthAddress())
if err != nil {
t.Fatalf("expected HTTP address to parse: %v", err)
}