mirror of
https://github.com/soypat/lneto.git
synced 2026-08-20 14:39:02 +00:00
do not crash if no tcp connections are desired
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user