shithub: riscv

Download patch

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;