|
@@ -335,15 +335,17 @@ static void update_nl_seq(u32 nl_seq, struct nf_ct_ftp_master *info, int dir,
|
|
|
if (info->seq_aft_nl[dir][i] == nl_seq)
|
|
|
return;
|
|
|
|
|
|
- if (oldest == info->seq_aft_nl_num[dir]
|
|
|
- || before(info->seq_aft_nl[dir][i], oldest))
|
|
|
+ if (oldest == info->seq_aft_nl_num[dir] ||
|
|
|
+ before(info->seq_aft_nl[dir][i],
|
|
|
+ info->seq_aft_nl[dir][oldest]))
|
|
|
oldest = i;
|
|
|
}
|
|
|
|
|
|
if (info->seq_aft_nl_num[dir] < NUM_SEQ_TO_REMEMBER) {
|
|
|
info->seq_aft_nl[dir][info->seq_aft_nl_num[dir]++] = nl_seq;
|
|
|
nf_conntrack_event_cache(IPCT_HELPINFO_VOLATILE, skb);
|
|
|
- } else if (oldest != NUM_SEQ_TO_REMEMBER) {
|
|
|
+ } else if (oldest != NUM_SEQ_TO_REMEMBER &&
|
|
|
+ after(nl_seq, info->seq_aft_nl[dir][oldest])) {
|
|
|
info->seq_aft_nl[dir][oldest] = nl_seq;
|
|
|
nf_conntrack_event_cache(IPCT_HELPINFO_VOLATILE, skb);
|
|
|
}
|