From 8d8399c2e52d80faf7bbe9b8e29568abafe1201a Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 19 Aug 2010 22:15:58 +0000 Subject: [PATCH] [OSKITTCP] - Disable routing because oskit needs to let our code do that - Comment out the ACK hack and restore the default BSD behavior svn path=/trunk/; revision=48569 --- .../lib/drivers/oskittcp/oskittcp/interface.c | 1 + .../lib/drivers/oskittcp/oskittcp/tcp_input.c | 23 +++++++++++++++++++ .../lib/drivers/oskittcp/oskittcp/tcp_subr.c | 6 ++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/reactos/lib/drivers/oskittcp/oskittcp/interface.c b/reactos/lib/drivers/oskittcp/oskittcp/interface.c index 3c589e7b255..db0b3a87185 100644 --- a/reactos/lib/drivers/oskittcp/oskittcp/interface.c +++ b/reactos/lib/drivers/oskittcp/oskittcp/interface.c @@ -129,6 +129,7 @@ int OskitTCPSocket( void *context, if( !error ) { so->so_connection = context; so->so_state |= SS_NBIO; + so->so_options |= SO_DONTROUTE; *aso = so; } OSKUnlock(); diff --git a/reactos/lib/drivers/oskittcp/oskittcp/tcp_input.c b/reactos/lib/drivers/oskittcp/oskittcp/tcp_input.c index 1811476e9cf..ed2759a0c39 100644 --- a/reactos/lib/drivers/oskittcp/oskittcp/tcp_input.c +++ b/reactos/lib/drivers/oskittcp/oskittcp/tcp_input.c @@ -84,6 +84,7 @@ struct inpcbinfo tcbinfo; * Set DELACK for segments received in order, but ack immediately * when segments are out of order (so fast retransmit can work). */ +#ifdef TCP_ACK_HACK #define TCP_REASS(tp, ti, m, so, flags) { \ if ((ti)->ti_seq == (tp)->rcv_nxt && \ (tp)->seg_next == (struct tcpiphdr *)(tp) && \ @@ -103,6 +104,24 @@ struct inpcbinfo tcbinfo; tp->t_flags |= TF_ACKNOW; \ } \ } +#else +#define TCP_REASS(tp, ti, m, so, flags) { \ + if ((ti)->ti_seq == (tp)->rcv_nxt && \ + (tp)->seg_next == (struct tcpiphdr *)(tp) && \ + (tp)->t_state == TCPS_ESTABLISHED) { \ + tp->t_flags |= TF_DELACK; \ + (tp)->rcv_nxt += (ti)->ti_len; \ + flags = (ti)->ti_flags & TH_FIN; \ + tcpstat.tcps_rcvpack++;\ + tcpstat.tcps_rcvbyte += (ti)->ti_len;\ + sbappend(&(so)->so_rcv, (m)); \ + sorwakeup(so); \ + } else { \ + (flags) = tcp_reass((tp), (ti), (m)); \ + tp->t_flags |= TF_ACKNOW; \ + } \ +} +#endif #ifndef TUBA_INCLUDE int @@ -573,6 +592,7 @@ findpcb: */ sbappend(&so->so_rcv, m); sorwakeup(so); +#ifdef TCP_ACK_HACK /* * If this is a short packet, then ACK now - with Nagel * congestion avoidance sender won't send more until @@ -584,6 +604,9 @@ findpcb: } else { tp->t_flags |= TF_DELACK; } +#else + tp->t_flags |= TF_DELACK; +#endif return; } } diff --git a/reactos/lib/drivers/oskittcp/oskittcp/tcp_subr.c b/reactos/lib/drivers/oskittcp/oskittcp/tcp_subr.c index 4632b688ef1..b9c215140e2 100644 --- a/reactos/lib/drivers/oskittcp/oskittcp/tcp_subr.c +++ b/reactos/lib/drivers/oskittcp/oskittcp/tcp_subr.c @@ -560,6 +560,7 @@ struct rtentry * tcp_rtlookup(inp) struct inpcb *inp; { +#ifndef __REACTOS__ struct route *ro; struct rtentry *rt; @@ -576,7 +577,10 @@ tcp_rtlookup(inp) rt = ro->ro_rt; } } - return rt; + return rt; +#else + return NULL; +#endif } /*