I am sorry for the delayed response. I am -0 on this. I think having one API which is supposed to be called all the time(even if it is a no-op) is less complicated than having an API to be called at certain times.
Thanks, Vijay On Tue, Sep 3, 2019 at 3:56 PM Walt Karas <wka...@verizonmedia.com> wrote: > OK then barring further input, I guess I will replace TSMLoc with TSMsgLoc, > TSUrlLoc and TSMimeFldLoc. TSHandleMLocRelease() will be removed, > TSHandleMimeFldLocRelease() will be added. TS API functions that currently > deal with MIME header mlocs will be changed to deal with TSMsgLoc. > > Since this goes beyond adding a function to the C API, the change can't be > backported into 9. Thus it won't be possible to backport > https://github.com/apache/trafficserver/pull/5812 into 9. > > On Tue, Sep 3, 2019 at 12:14 PM Walt Karas <wka...@verizonmedia.com> > wrote: > > > Currently a TSMLoc can be a message, a MIME header, a URL, or a MIME > > header field. It does make sense to have TS API functions that operate > on > > a MIME header, but can also accept a message mloc and retrieve the MIME > > header object from it. InkAPI.cc is able to do run-time validation that > > the right sort of mloc is passed to TS API functions. So it isn't so cut > > and dried that it's worth forcing all the rework to existing plugins to > > break up TSMLoc into multiple types. > > > > On Sat, Aug 24, 2019 at 8:36 AM Alan Carroll < > > solidwallofc...@verizonmedia.com> wrote: > > > >> I thought when we discussed this you were going to segregate these by > >> type. > >> One might consider splitting the current TSMLoc in to TSHdrLoc and > TSMLoc, > >> the latter requiring a release. I agreed with your view that it was best > >> to > >> have distinct types to avoid confusion about what should be passed to > >> which > >> API functions. > >> > >> On Thu, Aug 22, 2019 at 12:06 PM Walt Karas <wka...@verizonmedia.com > >> .invalid> > >> wrote: > >> > >> > Nominally, plugins are supposed to call TSHandleMLocRelease() for all > >> > TSMLoc values returned by the API. But in practice it is only > >> necessary to > >> > call it for TSMLoc values that refer to MIME header fields: > >> > > >> > > >> > > >> > https://github.com/apache/trafficserver/blob/d75af6f2eb6c63aa216111bd7f477f1f4c775580/src/traffic_server/InkAPI.cc#L2046 > >> > > >> > This adds significant complexity to plugin code. In some cases, the > API > >> > itself forces plugins to ignore the nominal need to call the release > >> > function for TSMLoc values that don't refer for MIME header > >> > fields. TSRemapFromUrlGet() and TSRemapToUrlGet() returns TSMLoc > >> values, > >> > but not a TSMBuffer value, making it impossible release the TSMLoc > >> values. > >> > I propose adding the API function: > >> > > >> > void TSMimeHdrFieldMLocRelease(TSMbuffer, TSMLoc); > >> > > >> > > >