From: Vladimir 'phcoder' Serbinenko Date: Sat, 23 Jul 2011 01:48:10 +0000 (+0200) Subject: Fix TCP retransmission X-Git-Tag: 2.00~851^2~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=440694e3d39beeb144dd600b76c5245f935bc22e;p=thirdparty%2Fgrub.git Fix TCP retransmission --- diff --git a/grub-core/net/tcp.c b/grub-core/net/tcp.c index f6d864523..578a254f4 100644 --- a/grub-core/net/tcp.c +++ b/grub-core/net/tcp.c @@ -708,12 +708,14 @@ grub_net_recv_tcp_packet (struct grub_net_buff *nb, for (unack = sock->unack_first; unack; unack = next) { grub_uint32_t seqnr; + struct tcphdr *unack_tcph; next = unack->next; seqnr = grub_be_to_cpu32 (((struct tcphdr *) unack->nb->data) ->seqnr); - seqnr += (nb->tail - nb->data - - (grub_be_to_cpu16 (tcph->flags) >> 12) * 4); - if (grub_be_to_cpu16 (tcph->flags) & TCP_FIN) + unack_tcph = (struct tcphdr *) unack->nb->data; + seqnr += (unack->nb->tail - unack->nb->data + - (grub_be_to_cpu16 (unack_tcph->flags) >> 12) * 4); + if (grub_be_to_cpu16 (unack_tcph->flags) & TCP_FIN) seqnr++; if (seqnr > acked)