Added check for bad segments in fast retransmit. Attempted fix for tcp_out.c:1148 bug

This commit is contained in:
Joseph Henry
2018-02-06 16:53:46 -08:00
parent 322da70aaf
commit e5d0c07f5b

View File

@@ -1145,6 +1145,11 @@ tcp_output(struct tcp_pcb *pcb)
/* In the case of fast retransmit, the packet should not go to the tail
* of the unacked queue, but rather somewhere before it. We need to check for
* this case. -STJ Jul 27, 2004 */
if (seg == NULL || useg != NULL)
{
LWIP_DEBUGF(TCP_DEBUG, ("seg or useg was null, skipping this packet\n"));
return ERR_OK;
}
if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) {
/* add segment to before tail of unacked list, keeping the list sorted */
struct tcp_seg **cur_seg = &(pcb->unacked);