Maximum segment size fixes (#25)

* Fixed MSS sent in SYN and SYN-ACK

* Fixed tests
This commit is contained in:
ddirect
2026-01-25 07:37:17 +02:00
committed by GitHub
parent 7edaea1093
commit 91fea9ae58
5 changed files with 11 additions and 6 deletions
+3 -2
View File
@@ -244,11 +244,12 @@ func (h *Handler) Send(b []byte) (int, error) {
}
}
offset := uint8(5)
mss := uint16(len(b) - sizeHeaderTCP)
var segment Segment
if h.AwaitingSynSend() {
// Handling init syn segment.
segment = ClientSynSegment(h.bufTx.iss, Size(h.bufRx.Size()))
h.optcodec.PutOption16(b[sizeHeaderTCP:], OptMaxSegmentSize, uint16(len(b)))
h.optcodec.PutOption16(b[sizeHeaderTCP:], OptMaxSegmentSize, mss)
offset++
} else {
var ok bool
@@ -266,7 +267,7 @@ func (h *Handler) Send(b []byte) (int, error) {
panic("expected n == available")
}
} else if segment.Flags == synack {
h.optcodec.PutOption16(b[sizeHeaderTCP:], OptMaxSegmentSize, uint16(len(b)))
h.optcodec.PutOption16(b[sizeHeaderTCP:], OptMaxSegmentSize, mss)
offset++
}
}