ref: 78d2a52577c39f5f580b925931aa1ffbdc3d16be
parent: 323d625864651cb5cec7ba5be42ec8e0b633266e
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Nov 15 19:54:04 EST 2016
ip/tcp: never raise the mss over the link mtu < 1280 for v6 v6 mandates minimum mtu of 1280, tho someone *could* setup an interface with a lower mtu or set it lower for testing.
--- a/sys/src/9/ip/tcp.c
+++ b/sys/src/9/ip/tcp.c
@@ -864,13 +864,14 @@
* otherwise, we use the default MSS which assumes a
* safe minimum MTU of 1280 bytes for V6.
*/
- if(r != nil && (version == V4 || (r->type & (Rifc|Runi)) != 0)){
+ if(r != nil){
ifc = r->ifc;
mtu = ifc->maxtu - ifc->m->hsize;
- if(version == V6)
- return mtu - (TCP6_PKT + TCP6_HDRSIZE);
- else
+ if(version == V4)
return mtu - (TCP4_PKT + TCP4_HDRSIZE);
+ mtu -= TCP6_PKT + TCP6_HDRSIZE;
+ if((r->type & (Rifc|Runi)) != 0 || mtu <= DEF_MSS6)
+ return mtu;
}
if(version == V6)
return DEF_MSS6;