[
https://issues.apache.org/jira/browse/TS-2656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13945293#comment-13945293
]
Leif Hedstrom commented on TS-2656:
-----------------------------------
I'm a little uneasy with this addition, perhaps because I don't understand the
use case, but my concerns include:
1. We now have a second API, that does almost exactly the same thing as the
existing API, but not quite the same. Confusion.
2. The internal state on the "to URL" is now not tracking the truth. I could
imagine someone logging the "to URL", yet, the scheme is not correct. Confusion.
3. I can also imagine races / edge cases where things are not clear. For
example, what are the semantics if you call this API before remap ? What
happens if you call this API before the old API (TSUrlSchemeSet() )? Confusion.
Maybe if we could understand what problems are in the core, we can make
changes to it such that TSUrlSchemeSet() actually does what you expect ? Can we
defer setting sm->t_state.scheme ?
Cheers,
-- Leif
> Add API to get/set the server connection scheme
> -----------------------------------------------
>
> Key: TS-2656
> URL: https://issues.apache.org/jira/browse/TS-2656
> Project: Traffic Server
> Issue Type: Improvement
> Reporter: Ron Barber
> Attachments: TS-2656.patch
>
>
> ATS currently sets the server connection scheme (sm->t_state.scheme) after
> remapping has occurred based on the server URL. Plugin's that desire to
> modify the connection scheme after remapping (such as in the
> TS_EVENT_HTTP_OS_DNS event) have no method to do so. I propose adding the
> following getter/setter API functions:
> {code}
> /**
> Retrieves the server connection scheme for the specified
> transaction @a txnp. TSHttpTxnServerSchemeGet() places the length of
> the string in the length argument. If the length is NULL then no
> attempt is made to dereference it.
> @note This function is useful if the server connection scheme needs to
> retrieved post remapping.
> @param txnp The transaction whose connection scheme to be retrieved
> @param length length of the returned string.
> @return The connection scheme for the server connection, as a string,
> or NULL if not set.
> */
> tsapi const char* TSHttpTxnServerSchemeGet(TSHttpTxn txnp, int *length);
> /** Set the connection scheme to the server (http or https) for the
> specified transaction @a txnp to the string value. If length is -1
> then TSHttpTxnServerSchemeSet() assumes that value is null-terminated.
> Otherwise, the length of the string value is taken to be length.
> @note This function is useful if the server connection scheme needs to
> change post remapping.
> @param txnp The transaction whose connection scheme to be set
> @param value value to set the scheme to.
> @param length string stored in value.
> @return @c TS_SUCCESS if scheme is recognized, else @c TS_ERROR
> */
> tsapi TSReturnCode TSHttpTxnServerSchemeSet(TSHttpTxn txnp,
> const char* value,
> int length);
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)