Hi all,

as part of the v5.0.0 API fixup’s, I’d like to change the string ownership 
“contract” for TSRedirectUrlSet(). Today, the incoming URL string is basically 
strdup()’ed, and in most use cases I can think of, it’d be more logical to 
stick to how we do other similar APIs, which is to assume the caller has 
allocated the memory. This also significantly improves efficiency for many use 
cases. For example, a typical plugin use case would be something like this:

          url_str = TSUrlStringGet(mbuf, url, &url_len);
          TSRedirectUrlSet(txn, url_str, url_len);
          TSfree(url_str);  // I’d like to eliminate this!

In the current implementations, this causes malloc() / strcpy() of the url_str 
twice; once in the plugin, and then once again in the TSRedirectUrlSet() API. 
This is a waste :). I understand this breaks implementations using this API, 
but I’m still on the mindset that we should take this opportunity to improve on 
the APIs in v5.0.0. We haven’t done so since v2.0, and we’ve learned a lot 
since then. We will provide tools (such as the existing perl script) that helps 
people migrate their plugins, and of course, all core plugins will be fixed.

I filed a Jira on this, at

        https://issues.apache.org/jira/browse/TS-2693


— Leif

Reply via email to