Add tcp.Listener (#15)

* begin reviewing TCP listener

* begin adding listener tests

* adding TestExchange implementation

* split out legacy and Step tests

* move listener to tcp package

* fix up tcp tests taking very long

* add xnet.TCPPool and work on TCPPool semantics

* xnet: TCPPool only accepts established connections

* xnet: getting to bottom of panic in xnet.Listener

* xnet: improve listener tests

* fix several data races in testing fixtures

* fix more synchronization things in listener test

* finalize tcplistener test
This commit is contained in:
Pat Whittingslow
2026-01-03 12:41:57 -03:00
committed by GitHub
parent 5731a378dd
commit 018f9258ac
19 changed files with 2288 additions and 849 deletions
+16
View File
@@ -219,6 +219,12 @@ func (s *StackAsync) Addr() netip.Addr {
return s.ip.Addr()
}
func (s *StackAsync) SetSubnet(subnetMask netip.Prefix) {
s.mu.Lock()
defer s.mu.Unlock()
s.subnet = subnetMask
}
func (s *StackAsync) SetHardwareAddress(hw [6]byte) error {
s.mu.Lock()
defer s.mu.Unlock()
@@ -286,6 +292,16 @@ func (s *StackAsync) ListenTCP(conn *tcp.Conn, localPort uint16) (err error) {
return nil
}
func (s *StackAsync) RegisterListener(listener *tcp.Listener) (err error) {
s.mu.Lock()
defer s.mu.Unlock()
lport := listener.LocalPort()
if lport == 0 {
return lneto.ErrZeroSource
}
return s.tcps.Register(listener, nil)
}
var errNoDNSServer = errors.New("no DNS server- did DHCP complete? You can set a predetermined DNS server in Stack configuration")
func (s *StackAsync) StartLookupIP(host string) error {