diff options
author | gVisor bot <gvisor-bot@google.com> | 2021-06-05 06:44:36 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-06-05 06:44:36 +0000 |
commit | 0429b9fffdccfaaf754488e4785c3fb7bda0737a (patch) | |
tree | 077ec4d99d22a414f9dbd43be279063321162430 /pkg/tcpip/transport/tcp/accept.go | |
parent | 652553fbadee5ad1a74ab64907fe4b3813e72144 (diff) | |
parent | 03f17c7d902945489f44bbd4e0c6e15695098b52 (diff) |
Merge release-20210518.0-76-g03f17c7d9 (automated)
Diffstat (limited to 'pkg/tcpip/transport/tcp/accept.go')
-rw-r--r-- | pkg/tcpip/transport/tcp/accept.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pkg/tcpip/transport/tcp/accept.go b/pkg/tcpip/transport/tcp/accept.go index 2b5abd3ee..d807b13b7 100644 --- a/pkg/tcpip/transport/tcp/accept.go +++ b/pkg/tcpip/transport/tcp/accept.go @@ -740,6 +740,13 @@ func (e *endpoint) handleListenSegment(ctx *listenContext, s *segment) tcpip.Err mss: rcvdSynOptions.MSS, }) + // Requeue the segment if the ACK completing the handshake has more info + // to be procesed by the newly established endpoint. + if (s.flags.Contains(header.TCPFlagFin) || s.data.Size() > 0) && n.enqueueSegment(s) { + s.incRef() + n.newSegmentWaker.Assert() + } + // Do the delivery in a separate goroutine so // that we don't block the listen loop in case // the application is slow to accept or stops |