Author: cgutman
Date: Sat Aug 6 23:07:54 2011
New Revision: 53106
URL:
http://svn.reactos.org/svn/reactos?rev=53106&view=rev
Log:
[LWIP]
- Set the TF_FIN flag if we add the FIN to an outgoing packet (previously only set when
sending an empty FIN)
- This is definitely a lwIP bug that needs to be fixed so I will open a bug for this
- Fixes the last remaining known lwIP bug (ws2_32:sock tests don't lose data anymore)
Modified:
branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp_out.c
Modified: branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp_out.c
URL:
http://svn.reactos.org/svn/reactos/branches/GSoC_2011/TcpIpDriver/lib/drive…
==============================================================================
--- branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp_out.c [iso-8859-1]
(original)
+++ branches/GSoC_2011/TcpIpDriver/lib/drivers/lwip/src/core/tcp_out.c [iso-8859-1] Sat
Aug 6 23:07:54 2011
@@ -131,6 +131,7 @@
if ((TCPH_FLAGS(last_unsent->tcphdr) & (TCP_SYN | TCP_FIN | TCP_RST)) == 0) {
/* no SYN/FIN/RST flag in the header, we can add the FIN flag */
TCPH_SET_FLAG(last_unsent->tcphdr, TCP_FIN);
+ pcb->flags |= TF_FIN;
return ERR_OK;
}
}
@@ -949,6 +950,7 @@
}
#endif /* TCP_CWND_DEBUG */
/* data available and window allows it to be sent? */
+ if (seg) DbgPrint("%d <= %d\n", (ntohl(seg->tcphdr->seqno) -
pcb->lastack + seg->len), wnd);
while (seg != NULL &&
ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) {
LWIP_ASSERT("RST not expected here!",
@@ -962,6 +964,7 @@
*/
if((tcp_do_output_nagle(pcb) == 0) &&
((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)){
+ DbgPrint("-----------------> NOT SENDING DUE TO NAGLE %d\n",
tcp_do_output_nagle(pcb));
break;
}
#if TCP_CWND_DEBUG