diff options
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/netfilter/ipt_SYNPROXY.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/ipv4/netfilter/ipt_SYNPROXY.c b/net/ipv4/netfilter/ipt_SYNPROXY.c index 90e489eb1c0a..67e17dcda65e 100644 --- a/net/ipv4/netfilter/ipt_SYNPROXY.c +++ b/net/ipv4/netfilter/ipt_SYNPROXY.c | |||
@@ -285,11 +285,15 @@ synproxy_tg4(struct sk_buff *skb, const struct xt_action_param *par) | |||
285 | XT_SYNPROXY_OPT_ECN); | 285 | XT_SYNPROXY_OPT_ECN); |
286 | 286 | ||
287 | synproxy_send_client_synack(skb, th, &opts); | 287 | synproxy_send_client_synack(skb, th, &opts); |
288 | } else if (th->ack && !(th->fin || th->rst || th->syn)) | 288 | return NF_DROP; |
289 | |||
290 | } else if (th->ack && !(th->fin || th->rst || th->syn)) { | ||
289 | /* ACK from client */ | 291 | /* ACK from client */ |
290 | synproxy_recv_client_ack(snet, skb, th, &opts, ntohl(th->seq)); | 292 | synproxy_recv_client_ack(snet, skb, th, &opts, ntohl(th->seq)); |
293 | return NF_DROP; | ||
294 | } | ||
291 | 295 | ||
292 | return NF_DROP; | 296 | return XT_CONTINUE; |
293 | } | 297 | } |
294 | 298 | ||
295 | static unsigned int ipv4_synproxy_hook(unsigned int hooknum, | 299 | static unsigned int ipv4_synproxy_hook(unsigned int hooknum, |