Patch Release with Layered Settings Merge, Fuzzy Dynamic Blocks, and Critical Bug Fixes
force_actions and force_symbols provide explicit override when layers conflict (#5959)disabled status distinguishes "disabled by settings" from "finished"; hard deps cascade-disable dependents while weak deps let them proceed — seven plugins annotated with correct dependency classification (#5959)worker:block_fuzzy_client(addr, prefix_len[, expire_ts[, reason]]) Lua method for runtime IP/CIDR blocking in fuzzy storage without config changes or restarts; custom response codes — 403 for ratelimits vs 503 for bans; ratelimit_whitelist check exposed to Lua (#5962)dup(), leaking one fd per milter connection and causing unbounded CLOSE_WAIT accumulation in production (regression in 4.0.0)task_timeout (8s default), masking hung tasks(...) and quoted strings — fixes cv=fail on multi-hop ARC chains where i=N appeared inside comments (#5963, #5966)ev_now() usage for correct monotonic time in dynamic block expiry#include <memory> in redis_backend.cxx (#5960)