[squid-dev] RFC: Reject repeated same-name annotations
Alex Rousskov
rousskov at measurement-factory.com
Thu Dec 15 21:30:06 UTC 2022
Hello,
I propose to adjust Squid code to reject repeated same-name
annotations from each and every source that supplies annotations:
* "note" directive
* adaptation_meta directive
* annotate_transaction ACL [1]
* annotate_client ACL [1]
* adaptation services responses (eCAP and ICAP)
* helper responses
If this RFC is approved: A configuration that contains a directive with
repeated same-name annotations will be rejected with a fatal ERROR[2]. A
helper or service response that contains repeated same-name annotations
will trigger a non-fatal (to Squid or transaction) cache.log ERROR[2].
Currently, Squid treats repeated same-name annotations inconsistently.
Depending on the annotation source, Squid processing code may
* use the first same-name annotation and ignore repetitions
* use the last same-name annotation and ignore repetitions
* use all same-name annotations, honoring repetitions
These inconsistencies make it difficult to improve/enhance/optimize
Squid code, while Squid ignorance hides misconfigurations and
helper/service implementation bugs, including problems that may be
related to access controls and other sensitive matters.
Any objections or better ideas?
Thank you,
Alex.
[1] In this context, we are talking about same-name annotations
mentioned in the corresponding ACL _configuration_ (i.e. all "acl"
directives with a given ACL name). A repeated _computation_ of
annotate_foo ACL will continue to deal with same-name annotations as
documented -- a "name+=value" configuration will continue to append
values to the existing same-name annotation, while a "name=value"
configuration will continue to overwrite any existing same-name annotation.
[2] Repeated same-name annotations that all have identical _values_ will
be flagged with a WARNING instead. Some overly simplistic configuration
generators, complicated configurations build from many include files,
and dumb helpers/services might generate repeated same-everything
annotations. Since such repetitions can be _safely_ ignored (honoring
just one name=value pair among all the identical ones), we do not have
to reject the configuration or log an ERROR because of them.
More information about the squid-dev
mailing list