diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c index be53c55d..5ecfe2fd 100644 --- a/src/core/tcp_out.c +++ b/src/core/tcp_out.c @@ -358,6 +358,8 @@ tcp_enqueue(struct tcp_pcb *pcb, void *arg, u16_t len, /* free the first (header-only) pbuf if it is now empty (contained only headers) */ struct pbuf *old_q = queue->p; queue->p = queue->p->next; + old_q->next = NULL; + queuelen--; pbuf_free(old_q); } LWIP_ASSERT("zero-length pbuf", (queue->p != NULL) && (queue->p->len > 0)); @@ -476,8 +478,8 @@ tcp_output(struct tcp_pcb *pcb) useg = pcb->unacked; if (useg != NULL) { for (; useg->next != NULL; useg = useg->next); - } - + } + /* If the TF_ACK_NOW flag is set and no data will be sent (either * because the ->unsent queue is empty or because the window does * not allow it), construct an empty ACK segment and send it.