Gates / frontend (push) Successful in 1m36s
Gates / test (push) Successful in 1m56s
Gates / test-aarch64 (push) Successful in 7m37s
Gates / package (push) Successful in 9m12s
Gates / container (push) Successful in 13s
CI / gates (push) Successful in 19m4s
query rows gain qclass, rcode, group, policy action and reason, the matched rule or list entry with its source, cname and safe-search targets, route kind, forward zone, and the resolver that actually answered — the pool and local markers die. servfails are logged and name the resolver that lost; post-parse protocol refusals become rows. a detail page at /queries/:id renders the ordered explanation, and coverage watermarks distinguish an empty history from a missing one. the schema fingerprint changes: existing query history is recreated with the old file kept aside and the reset filed as a resolved diagnostic. fixes an oversized udp reply being rebuilt as noerror, which handed clients a truncated nxdomain as success.
20 lines
874 B
Zig
20 lines
874 B
Zig
//! Length caps on the configuration labels that the query log copies into every
|
|
//! row it writes.
|
|
//!
|
|
//! They live in a module of their own because two files need them and neither
|
|
//! may import the other: `config/validate.zig` rejects a name that exceeds a cap
|
|
//! and `storage/logger.zig` sizes an `Entry` buffer from it, while `validate`
|
|
//! already imports `logger` for the entry-size budget it derives. A cap owned by
|
|
//! either file would close that loop.
|
|
//!
|
|
//! The values are deliberately short. A group or a source name is a label an
|
|
//! operator reads in a table cell, and every byte of it is copied into every
|
|
//! logged row — the cap is what keeps a pasted paragraph out of an `Entry` that
|
|
//! travels by value through the queue.
|
|
|
|
/// `groups[].name`.
|
|
pub const max_group_name_len = 64;
|
|
|
|
/// `blocklist_sources[].name`.
|
|
pub const max_source_name_len = 64;
|