Hi, In our code, we have a concept of well-known-strings (WKSs). These are used to sort of normalize common header and URL strings, and can be used in some cases for optimizing lookups in request header heaps etc. When a plugin uses a WKS directly, such as TS_MIME_FIELD_CACHE_CONTROL to look for a header, the core will automatically use this optimally, because this constant points to the internal WKS (which is MIME_FIELD_CACHE_CONTROL internally).
Now, this is all fine, if the plugin knows what headers it’s looking for. But for plugins such as header_rewrite, or TxnBox, where an external configuration specifies which headers to work with, there’s currently no easy way (rather than iterations) to find the WKS corresponding to a user specified string. As such, I’m suggesting that we expose the internal WKS lookup functionality with a public API: tsapi const char *TSMimeHdrStringToWKS(const char *str, int length); The length parameter is “optional” as per normal APIs here, i.e. if you specify a negative value for the length, the API will do a strlen() of the input str for you. I’ve made a PR with these changes, which also includes the necessary support for the core header_rewrite plugin to use this new API. If there are no concerns with the API changes, after discussions here and on the PR, I will change the PR from a Draft to normal PR for proper approval. Thanks, — Leif https://github.com/apache/trafficserver/pull/9643 The implementation as such is simple, and hdrtoken_string_to_wks() is what the core uses to populate the constants mentioned above: const char * TSMimeHdrStringToWKS(const char *str, int length) { if (length < 0) { return hdrtoken_string_to_wks(str); } else { return hdrtoken_string_to_wks(str, length); } }