One week of silence. I assume the proposal was accepted. I made a PR for this change. https://github.com/apache/trafficserver/pull/11519
Thanks, Masakazu On Mon, Jul 1, 2024 at 10:21 PM Masakazu Kitajo <mas...@apache.org> wrote: > Hi all, > > I'd like to propose these two changes below: > - Remove TSUrlHttpParamsGet/Set > - Remove special treatment for the "params" segment (not query > parameters, see below) > - Change TSUrlPathGet to include the "params" segment (as the result of > the removal of special treatment above) > > RFC 1808 defined URL syntax as follows and it had "params". > <scheme>://<net_loc>/<path>;<params>?<query>#<fragment> > > The syntax was updated on RFC 3986, and now semicolons do not have special > meanings in URL syntax. RFC 3986 says: > > "Aside from dot-segments in hierarchical paths, a path segment is > considered opaque by the generic syntax. URI producing applications > often use the reserved characters allowed in a segment to delimit > scheme-specific or dereference-handler-specific subcomponents. For > example, the semicolon (";") and equals ("=") reserved characters are > often used to delimit parameters and parameter values applicable to > that segment." > > Since the path segment is opaque, only applications can understand the > structure. In fact, there are applications that use semicolons not only in > between "path" and "query" but also at random places in the "path" segment. > For example, "/abc;p1=x/def;p2=y/ghi". Some people call this Matrix > Parameters. Although there seems to be common sense in the way of embedding > parameters into the "path" segment, it's not really standardized (please > let me know if there is a specification, but not blog posts). It is > impossible to support all the variations of Matrix Parameters syntaxes. > > ATS has TSUrlHttpParamsGet which is supposed to return the "params" > segment defined on RFC 1808, but the implementation is incomplete (there > are patterns that can not be parsed correctly). And needless to say, it > does not support Matrix Parameters. > > I think ATS should drop the support for the "params" segment because it's > no longer defined on RFCs and TSUrlHttpParamsGet does not satisfy anyone's > expectations properly. Moreover, the existence of TSUrlHttpParamsGet is > error prone because some people don't expect there is such a segment. > > The changes I proposed above would be made in 2 steps. > > Step 1 (ATS 10): > - Mark TSUrlHttpParamsGet as deprecated > - Make TSUrlHttpParamsGet return empty string > - Remove code for the "params" segment (i.e. the code that searches a > semicolon, etc) > - Make TSUrlPathGet include the "params" segment which is currently > returned by TSUrlHttpParamsGet > > Step 2 (ATS 11 or later): > - Remove TSUrlHttpParamsGet > > In step 1, there should be no negative impact to existing plugins. > Existing code should work without any code changes. Some plugins that use > TSUrlPathGet might work a bit differently because the API would include the > string between a semicolon and a question mark, but such plugins might have > been working incorrectly because of the incomplete implementation of the > URL parser. > > Thoughts? > > Thanks, > Masakazu > >