JIRA issue TS-4698 and pull request 
https://github.com/apache/trafficserver/pull/822 propose to add a TS API 
function to determine whether the current client request represents a websocket 
connection attempt.

The motivation: I’ve been working on a C++ API intercept plugin which, among 
other things, is able to terminate websocket connections. I thought it might be 
of interest to contribute a websocket termination example (see TS-4699 and the 
associated pull request https://github.com/apache/trafficserver/pull/824).

In order for such a plugin to determine whether the incoming connection is a 
websocket connection it seems appropriate that
* it use the same test that TS already uses internally to make this decision, 
and that
* the ‘official correct way’ to make this decision be exposed through an API 
function.

For this purpose I’m proposing to add a function called TSHttpTxnIsWebsocket. 
It takes a TSHttpTxn and returns a C int, to be interpreted as a bool in the 
standard C way, namely non-zero means true.

The test checks whether the HttpSM state is_upgrade_request flag is set with an 
upgrade_token_wks of MIME_VALUE_WEBSOCKET. IIUC this is equivalent to the 
incoming request having an upgrade header with a value of `websocket`.

Documentation for this very simple function is in TSHttpTxnIsWebsocket.en.rst 
in the PR.

Cheers,
Oliver

Reply via email to