Versions
- Core: v6.4.2
- Web: v6.5
- FTL: v6.6.2
Expected behavior
When a query is blocked because of deep CNAME inspection (the log row shows blocked <target>), the "Allow" button should let me unblock it — i.e. act on the CNAME target that actually triggered the block, or at least make clear that's what needs allow-listing.
Actual behavior
The "Allow" button POSTs the queried domain to /api/domains/allow/exact, not the CNAME target shown as the block reason. Because a blocked CNAME target is (correctly, by design) not overridden by an allow entry on the head domain, clicking "Allow" can never unblock the query — it just adds an inert allow entry for a domain that was never the problem. On a second click it also errors with UNIQUE constraint failed: domainlist.domain, domainlist.type, since the inert entry already exists.
The UI already knows the responsible domain — it renders it in the row (blocked thirdparty.bnc.lt) — so the button has the information it needs but acts on the wrong domain.
Steps to reproduce
- Query a domain that CNAMEs to a gravity-blocklisted domain. Example:
dl.mail.express-scripts.com → CNAME → thirdparty.bnc.lt (on StevenBlack/hosts).
- In the Query Log the row shows
blocked thirdparty.bnc.lt.
- Click Allow. It adds/attempts to add
dl.mail.express-scripts.com — the query stays blocked, because thirdparty.bnc.lt is still on a blocklist.
Suggested fix
For CNAME-cloaked rows, either (a) offer to allow the CNAME target, ideally with a note that it may be shared tracking infrastructure, or (b) disable the per-row "Allow" and explain that the block originates from the CNAME target. The current button presents a one-click action that is structurally incapable of doing what it implies.
(Note: the confusing raw UNIQUE constraint message is separately being addressed in FTL#2878; this report is specifically about the button acting on the wrong domain.)
Versions
Expected behavior
When a query is blocked because of deep CNAME inspection (the log row shows
blocked <target>), the "Allow" button should let me unblock it — i.e. act on the CNAME target that actually triggered the block, or at least make clear that's what needs allow-listing.Actual behavior
The "Allow" button POSTs the queried domain to
/api/domains/allow/exact, not the CNAME target shown as the block reason. Because a blocked CNAME target is (correctly, by design) not overridden by an allow entry on the head domain, clicking "Allow" can never unblock the query — it just adds an inert allow entry for a domain that was never the problem. On a second click it also errors withUNIQUE constraint failed: domainlist.domain, domainlist.type, since the inert entry already exists.The UI already knows the responsible domain — it renders it in the row (
blocked thirdparty.bnc.lt) — so the button has the information it needs but acts on the wrong domain.Steps to reproduce
dl.mail.express-scripts.com→ CNAME →thirdparty.bnc.lt(on StevenBlack/hosts).blocked thirdparty.bnc.lt.dl.mail.express-scripts.com— the query stays blocked, becausethirdparty.bnc.ltis still on a blocklist.Suggested fix
For CNAME-cloaked rows, either (a) offer to allow the CNAME target, ideally with a note that it may be shared tracking infrastructure, or (b) disable the per-row "Allow" and explain that the block originates from the CNAME target. The current button presents a one-click action that is structurally incapable of doing what it implies.
(Note: the confusing raw
UNIQUE constraintmessage is separately being addressed in FTL#2878; this report is specifically about the button acting on the wrong domain.)