summaryrefslogtreecommitdiffhomepage
path: root/pkg/tcpip/transport/tcp/connect.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/tcpip/transport/tcp/connect.go')
-rw-r--r--pkg/tcpip/transport/tcp/connect.go15
1 files changed, 3 insertions, 12 deletions
diff --git a/pkg/tcpip/transport/tcp/connect.go b/pkg/tcpip/transport/tcp/connect.go
index cc34e74b2..7b80f7519 100644
--- a/pkg/tcpip/transport/tcp/connect.go
+++ b/pkg/tcpip/transport/tcp/connect.go
@@ -289,8 +289,9 @@ func (h *handshake) synRcvdState(s *segment) *tcpip.Error {
}
// Update timestamp if required. See RFC7323, section-4.3.
- h.ep.updateRecentTimestamp(s.parsedOptions.TSVal, h.ackNum, s.sequenceNumber)
-
+ if h.ep.sendTSOk && s.parsedOptions.TS {
+ h.ep.updateRecentTimestamp(s.parsedOptions.TSVal, h.ackNum, s.sequenceNumber)
+ }
h.state = handshakeCompleted
return nil
}
@@ -740,16 +741,6 @@ func (e *endpoint) handleSegments() *tcpip.Error {
// send window scale.
s.window <<= e.snd.sndWndScale
- // If the timestamp option is negotiated and the segment
- // does not carry a timestamp option then the segment
- // must be dropped as per
- // https://tools.ietf.org/html/rfc7323#section-3.2.
- if e.sendTSOk && !s.parsedOptions.TS {
- e.stack.Stats().DroppedPackets.Increment()
- s.decRef()
- continue
- }
-
// RFC 793, page 41 states that "once in the ESTABLISHED
// state all segments must carry current acknowledgment
// information."