do not crash if no tcp connections are desired

This commit is contained in:
Patricio Whittingslow
2025-10-22 19:19:32 -03:00
parent 407f4a08f1
commit bb4053647d
6 changed files with 19 additions and 12 deletions
+9 -8
View File
@@ -123,14 +123,15 @@ func (s *StackAsync) Reset(cfg StackConfig) error {
}
// Enable TCP if connections present.
err = s.tcps.ResetTCP(cfg.MaxTCPConns)
if err != nil {
return err
}
err = s.ip.Register(&s.tcps)
if err != nil {
return err
if cfg.MaxTCPConns > 0 {
err = s.tcps.ResetTCP(cfg.MaxTCPConns)
if err != nil {
return err
}
err = s.ip.Register(&s.tcps)
if err != nil {
return err
}
}
// Now setup stacks.
+6
View File
@@ -85,13 +85,19 @@ func (s StackRetrying) DoResolveHardwareAddress6(addr netip.Addr, timeout time.D
func (s StackRetrying) DoDialTCP(conn *tcp.Conn, localPort uint16, addrp netip.AddrPort, timeout time.Duration, retries int) (err error) {
expectEnd := time.Now().Add(timeout * time.Duration(retries))
var firstErr error
for i := 0; i < retries; i++ {
err = s.block.DoDialTCP(conn, localPort, addrp, timeout)
if err == nil {
return nil
} else if firstErr == nil {
firstErr = err
}
}
if time.Now().Before(expectEnd) {
if err != firstErr {
return errors.Join(firstErr, err)
}
return err
}
return errRetriesExceeded