Mark Lakata wrote:
I think I've gotten closer to the problem. It seems that the size of the segments that are queued up to be sent by tcp_output are larger than the 'wnd' size (which is pcb->snd_wnd in this case), and thus they don't get sent. I'm not sure how this could have happened.

Specifically, this while() loopnever gets entered(line 969 in tcp_out.c) in tcp_output()
(seg is non NULL)

  while (seg != NULL &&
         ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) {


because seg->len is bigger than wnd.

Which version of lwIP are you using? (i.e. what does '?' stand for?) I'm asking because from 1.4.0 to 1.4.1, there have been 2 or 3 bugs fixed in this area, which should ensure that all segments we create fit into the window (unless the remote side does not send window updates according to the TCP spec).

If 1.4.1 does not fix this, what is your MSS size, what are the connection's TX/RX window sizes and what OS or IP stack is your peer running?


Simon
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to