mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-12-26 12:13:47 +00:00
tcp_in : fix ooseq update error
if a pbuf received with the same seqno in ooseq , we then check the size and replace the existing one with the larger one,but if the existing one is the last segment in ooseq ,it might has been trimed before. the replacing action will overrun our receive windows see patch #10106 and bug #56397
This commit is contained in:
parent
de0b97861a
commit
574bd6e5aa
@ -1687,6 +1687,15 @@ tcp_receive(struct tcp_pcb *pcb)
|
||||
->ooseq. We check the lengths to see which one to
|
||||
discard. */
|
||||
if (inseg.len > next->len) {
|
||||
|
||||
/* If next segment is the last segment in ooseq
|
||||
and smaller than inseg, that means it has been
|
||||
trimmed before to fit our window, so we just
|
||||
break here. */
|
||||
if (next->next == NULL) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* The incoming segment is larger than the old
|
||||
segment. We replace some segments with the new
|
||||
one. */
|
||||
|
Loading…
Reference in New Issue
Block a user