Github user SolidWallOfCode commented on a diff in the pull request:

    https://github.com/apache/trafficserver/pull/829#discussion_r73769080
  
    --- Diff: proxy/InkAPI.cc ---
    @@ -4655,6 +4655,15 @@ TSHttpTxnClientReqGet(TSHttpTxn txnp, TSMBuffer 
*bufp, TSMLoc *obj)
       return TS_ERROR;
     }
     
    +const char *
    +TSHttpTxnClientProtocolGet(TSHttpTxn txnp)
    +{
    +  sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS);
    +
    +  HttpSM *sm = reinterpret_cast<HttpSM *>(txnp);
    +  return sm->ua_session->get_protocol_string();
    --- End diff --
    
    What's the status on this? I am +1 on adding the API, it's often useful to 
get the actual protocol in use by the user agent and I don't see a better 
mechanism to do it. You could do this long ago, sort of, using the ProtoSet 
stuff, but that was much more fragile. One of the motivations for the TS-3612 
work was to be able to implement this easily. Internally the HttpSM doesn't 
have to know, it can just pass the query on to the HttpProxyClientTransaction 
and reliably get an accurate result.
    
    I know James thinks there is a better way, but I don't see it. Querying via 
the HttpSM or ClientSession (HttpTxn or HttpSsn) seems quite natural. I suppose 
we could say it only makes sense for the session object but that's just making 
work for the plugin since it would simply call TSHttpTnSsnGet(). I originally 
had a vision where the API would enable walking up the protocol stack for the 
user agent but I now think that might be too much as no one has asked for such 
capability.
    
    One thing that should be brought up is the detection of TLS/SSL on the user 
agent connection. Should this be considered a protocol layer under say HTTP/2, 
or have independent API? I'd prefer something more unified if we can get it.
    



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to