changes to TCP stack to enable xnet functionality

This commit is contained in:
soypat
2025-08-16 15:17:46 -03:00
parent c2995383da
commit 9cf4e35d2e
10 changed files with 124 additions and 19 deletions
+5 -6
View File
@@ -122,21 +122,20 @@ func (s StackBlocking) DoDialTCP(localPort uint16, addrp netip.AddrPort, timeout
deadline := time.Now().Add(timeout)
for i := 0; i < maxIter; i++ {
state := conn.State()
switch state {
case tcp.StateEstablished:
break
case tcp.StateSynSent, tcp.StateSynRcvd:
if state == tcp.StateEstablished {
return conn, nil
} else if state == tcp.StateSynSent || state == tcp.StateSynRcvd || conn.InternalHandler().AwaitingSynSend() {
if err = s.checkDeadline(deadline); err != nil {
return nil, err
}
time.Sleep(sleep)
default:
} else {
// Unexpected state, abort and terminate connection.
conn.Abort()
return nil, errTCPFailedToConnect
}
}
return conn, nil
return conn, errDeadlineExceed
}
func (s StackBlocking) checkDeadline(deadline time.Time) error {