mirror of
https://github.com/mailscope/kumomta.git
synced 2026-08-19 02:48:18 +00:00
ee1e5b980e
import_headers takes an array of per-spec option tables, each describing how a single header name or pattern should be imported into the message metadata. Compared to import_x_headers it adds: * Trailing-`*` wildcard patterns (e.g. `X-*`) alongside exact names. Bare/leading/interior wildcards are rejected at compile time. * `match` of `first`, `last` (default), or `all`. `all` captures every matching header instance as an array of strings; the others capture a string. Specs that produce no matches write nothing. * `transform` selects the metadata key style: `snake_case` (default, matches the existing import_x_headers behavior), `kebab_case`, `camel_case`, or `pascal_case`. Header matching itself is always case-insensitive. * `target` overrides the metadata key for exact-name specs. * `remove` strips the matched headers from the message body in a single follow-up pass. When more than one spec could match a header, the first matching spec wins, so callers can place specific rules ahead of a wildcard catch-all. import_x_headers now delegates to import_headers, so its behavior is unchanged and the two share a single implementation. retain_headers now passes the header index alongside the &Header to its closure, which import_headers uses for its post-pass removal step instead of tracking a parallel counter. Existing callers that don't need the index ignore it with `_`. Closes: #515