summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/9/ip/tcp.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/src/9/ip/tcp.c b/sys/src/9/ip/tcp.c
index 050a24a0b..b612bbd5a 100644
--- a/sys/src/9/ip/tcp.c
+++ b/sys/src/9/ip/tcp.c
@@ -864,13 +864,14 @@ tcpmtu(Route *r, int version, uint *scale)
* 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;