Refactor SSH server to manage listener lifecycle and expose active address via Addr method. (#5036)

This commit is contained in:
Zoltan Papp
2026-01-07 15:34:26 +01:00
committed by GitHub
parent e586c20e36
commit 6ff9aa0366
2 changed files with 26 additions and 15 deletions

View File

@@ -3,7 +3,6 @@ package server
import (
"context"
"fmt"
"net"
"net/netip"
"testing"
"time"
@@ -14,23 +13,21 @@ func StartTestServer(t *testing.T, server *Server) string {
errChan := make(chan error, 1)
go func() {
ln, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
errChan <- err
return
}
actualAddr := ln.Addr().String()
if err := ln.Close(); err != nil {
errChan <- fmt.Errorf("close temp listener: %w", err)
return
}
addrPort := netip.MustParseAddrPort(actualAddr)
// Use port 0 to let the OS assign a free port
addrPort := netip.MustParseAddrPort("127.0.0.1:0")
if err := server.Start(context.Background(), addrPort); err != nil {
errChan <- err
return
}
started <- actualAddr
// Get the actual listening address from the server
actualAddr := server.Addr()
if actualAddr == nil {
errChan <- fmt.Errorf("server started but no listener address available")
return
}
started <- actualAddr.String()
}()
select {