[OSKITTCP]
[reactos.git] / reactos / lib / drivers / oskittcp / oskittcp / tcp_input.c
index 248b8bc..ed2759a 100644 (file)
@@ -1984,7 +1984,14 @@ tcp_mss(tp, offer)
 
        inp = tp->t_inpcb;
        if ((rt = tcp_rtlookup(inp)) == NULL) {
+#ifndef __REACTOS__
                tp->t_maxopd = tp->t_maxseg = tcp_mssdflt;
+#else
+               if (offer < tcp_mssdflt)
+                       tp->t_maxopd = tp->t_maxseg = tcp_mssdflt;
+               else
+                       tp->t_maxopd = tp->t_maxseg = min(offer, tcp_mssopt(tp));
+#endif
                return;
        }
 #ifndef __REACTOS__
@@ -2139,15 +2146,20 @@ int
 tcp_mssopt(tp)
        struct tcpcb *tp;
 {
+#ifndef __REACTOS__
        struct rtentry *rt;
 
        rt = tcp_rtlookup(tp->t_inpcb);
        if (rt == NULL)
                return tcp_mssdflt;
-#ifndef __REACTOS__
+
        return rt->rt_ifp->if_mtu - sizeof(struct tcpiphdr);
 #else
-       return tcp_mssdflt;
+       struct ifaddr *ifa = ifa_ifwithnet((struct sockaddr *)&tp->t_inpcb->inp_faddr);
+       if (ifa == NULL)
+               return tcp_mssdflt;
+
+       return ifa->ifa_mtu - sizeof(struct tcpiphdr);
 #endif
 }
 #endif /* TUBA_INCLUDE */