Thu 22 Mar 2012 12:32:35 PM UTC, original submission:
The fix for bug #34587 is incorrect.
As noted in RFC 879:
Currently, lwip confuses the recv MSS with the send MSS
(pcb->mss is the send MSS; I don't think we keep track of
the recv MSS right now, since it's only needed for the SYN)
Basically,
recv_MSS = MIN(TCP_MSS, MTU(link) - 40)
send_MSS = MIN(576, MTU(link)) - 40
send_MSS must be more conservative than recv_MSS, as we must assume that
the distant host cannot process datagrams larger than 576 in IPv4.
(NB: the value is 1280 in IPv6).
The problem is that I don't see an easy way in tcp_output_segment
to get the MTU of the output link...
Proposed patch to illustrate my comment:
Comments? Thoughts?
cf. also this discussion
|