Browse Source

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

pull/1/head
Joseph Henry 8 years ago
parent
commit
e5d0c07f5b
  1. 5
      ext/lwip/src/core/tcp_out.c

5
ext/lwip/src/core/tcp_out.c

@ -1145,6 +1145,11 @@ tcp_output(struct tcp_pcb *pcb)
/* In the case of fast retransmit, the packet should not go to the tail /* 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 * of the unacked queue, but rather somewhere before it. We need to check for
* this case. -STJ Jul 27, 2004 */ * 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))) { 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 */ /* add segment to before tail of unacked list, keeping the list sorted */
struct tcp_seg **cur_seg = &(pcb->unacked); struct tcp_seg **cur_seg = &(pcb->unacked);

Loading…
Cancel
Save