diff --git a/nfq/darkmagic.c b/nfq/darkmagic.c index 054de60..3f8fd99 100644 --- a/nfq/darkmagic.c +++ b/nfq/darkmagic.c @@ -669,9 +669,15 @@ void tcp_rewrite_wscale(struct tcphdr *tcp, uint8_t scale_factor) if (scale && scale[1]==3) // length should be 3 { scale_factor_old=scale[2]; - scale[2]=scale_factor; - if (scale_factor_old!=scale_factor) - DLOG("Scale factor change %u => %u\n", scale_factor_old, scale_factor) + // do not allow increasing scale factor + if (scale_factor>=scale_factor_old) + DLOG("Scale factor %u unchanged\n", scale_factor_old) + else + { + scale[2]=scale_factor; + if (scale_factor_old!=scale_factor) + DLOG("Scale factor change %u => %u\n", scale_factor_old, scale_factor) + } } } }