diff -ru linux-orig/net/ipv4/netfilter/ip_nat_helper.c linux-stable/net/ipv4/netfilter/ip_nat_helper.c --- linux-orig/net/ipv4/netfilter/ip_nat_helper.c 2005-03-02 02:37:49.000000000 -0500 +++ linux-stable/net/ipv4/netfilter/ip_nat_helper.c 2005-04-04 00:22:28.929366600 -0400 @@ -76,11 +76,14 @@ * correction, record it: we don't handle more than one * adjustment in the window, but do deal with common case of a * retransmit */ - if (this_way->offset_before == this_way->offset_after - || before(this_way->correction_pos, seq)) { - this_way->correction_pos = seq; - this_way->offset_before = this_way->offset_after; - this_way->offset_after += sizediff; + if (seq != this_way->correction_pos) { + seq -= this_way->offset_after; + if (this_way->offset_before == this_way->offset_after + || before(this_way->correction_pos, seq)) { + this_way->correction_pos = seq; + this_way->offset_before = this_way->offset_after; + this_way->offset_after += sizediff; + } } UNLOCK_BH(&ip_nat_seqofs_lock);