Skip to content

Commit c819272

Browse files
author
bneradt
committed
Making 9.2.x backwards compatible with 9.1.x
In order to make 9.2.x backwards compatible against plugins compiled with 9.1.x, this PR does the following: 1. Adds back exposed enum values removed in 9.2.x 2. Any added enum values are put at the end of their enumeration lists. 3. Adds back the TSHttpTxnCntl function
1 parent c46a4ca commit c819272

File tree

4 files changed

+90
-2
lines changed

4 files changed

+90
-2
lines changed

include/ts/apidefs.h.in

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -437,8 +437,8 @@ typedef enum {
437437
TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK,
438438
TS_LIFECYCLE_MSG_HOOK,
439439
TS_LIFECYCLE_TASK_THREADS_READY_HOOK,
440-
TS_LIFECYCLE_SSL_SECRET_HOOK,
441440
TS_LIFECYCLE_SHUTDOWN_HOOK,
441+
TS_LIFECYCLE_SSL_SECRET_HOOK,
442442
TS_LIFECYCLE_LAST_HOOK
443443
} TSLifecycleHookID;
444444

@@ -827,7 +827,6 @@ typedef enum {
827827
TS_CONFIG_HTTP_CACHE_MAX_OPEN_WRITE_RETRIES,
828828
TS_CONFIG_HTTP_REDIRECT_USE_ORIG_CACHE_KEY,
829829
TS_CONFIG_HTTP_ATTACH_SERVER_SESSION_TO_CLIENT,
830-
TS_CONFIG_HTTP_MAX_PROXY_CYCLES,
831830
TS_CONFIG_WEBSOCKET_NO_ACTIVITY_TIMEOUT,
832831
TS_CONFIG_WEBSOCKET_ACTIVE_TIMEOUT,
833832
TS_CONFIG_HTTP_UNCACHEABLE_REQUESTS_BYPASS_PARENT,
@@ -856,13 +855,15 @@ typedef enum {
856855
TS_CONFIG_HTTP_SERVER_MIN_KEEP_ALIVE_CONNS,
857856
TS_CONFIG_HTTP_PER_SERVER_CONNECTION_MAX,
858857
TS_CONFIG_HTTP_PER_SERVER_CONNECTION_MATCH,
858+
TS_CONFIG_SSL_CLIENT_VERIFY_SERVER,
859859
TS_CONFIG_SSL_CLIENT_VERIFY_SERVER_POLICY,
860860
TS_CONFIG_SSL_CLIENT_VERIFY_SERVER_PROPERTIES,
861861
TS_CONFIG_SSL_CLIENT_SNI_POLICY,
862862
TS_CONFIG_SSL_CLIENT_PRIVATE_KEY_FILENAME,
863863
TS_CONFIG_SSL_CLIENT_CA_CERT_FILENAME,
864864
TS_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE,
865865
TS_CONFIG_HTTP_CONNECT_DEAD_POLICY,
866+
TS_CONFIG_HTTP_MAX_PROXY_CYCLES,
866867
TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX,
867868
TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK,
868869
TS_CONFIG_NET_SOCK_NOTSENT_LOWAT,

include/ts/experimental.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,23 @@ int64_t TSCacheHttpInfoSizeGet(TSCacheHttpInfo infop);
7373
tsapi int TSMimeHdrFieldEqual(TSMBuffer bufp, TSMLoc hdr_obj, TSMLoc field1, TSMLoc field2);
7474
tsapi TSReturnCode TSHttpTxnHookRegisteredFor(TSHttpTxn txnp, TSHttpHookID id, TSEventFunc funcp);
7575

76+
/* Various HTTP "control" modes */
77+
typedef enum {
78+
TS_HTTP_CNTL_GET_LOGGING_MODE,
79+
TS_HTTP_CNTL_SET_LOGGING_MODE,
80+
TS_HTTP_CNTL_GET_INTERCEPT_RETRY_MODE,
81+
TS_HTTP_CNTL_SET_INTERCEPT_RETRY_MODE
82+
} TSHttpCntlTypeExperimental;
83+
84+
#define TS_HTTP_CNTL_OFF (void *)0
85+
#define TS_HTTP_CNTL_ON (void *)1
86+
/* usage:
87+
void *onoff = 0;
88+
TSHttpTxnCntl(.., TS_HTTP_CNTL_GET_LOGGING_MODE, &onoff);
89+
if (onoff == TS_HTTP_CNTL_ON) ....
90+
*/
91+
tsapi TSReturnCode TSHttpTxnCntl(TSHttpTxn txnp, TSHttpCntlTypeExperimental cntl, void *data);
92+
7693
/* Protocols APIs */
7794
tsapi void TSVConnCacheHttpInfoSet(TSVConn connp, TSCacheHttpInfo infop);
7895

plugins/lua/ts_lua_http_config.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ typedef enum {
133133
TS_LUA_CONFIG_HTTP_ALLOW_MULTI_RANGE = TS_CONFIG_HTTP_ALLOW_MULTI_RANGE,
134134
TS_LUA_CONFIG_HTTP_REQUEST_BUFFER_ENABLED = TS_CONFIG_HTTP_REQUEST_BUFFER_ENABLED,
135135
TS_LUA_CONFIG_HTTP_ALLOW_HALF_OPEN = TS_CONFIG_HTTP_ALLOW_HALF_OPEN,
136+
TS_LUA_CONFIG_SSL_CLIENT_VERIFY_SERVER = TS_CONFIG_SSL_CLIENT_VERIFY_SERVER,
136137
TS_LUA_CONFIG_SSL_CLIENT_VERIFY_SERVER_POLICY = TS_CONFIG_SSL_CLIENT_VERIFY_SERVER_POLICY,
137138
TS_LUA_CONFIG_SSL_CLIENT_VERIFY_SERVER_PROPERTIES = TS_CONFIG_SSL_CLIENT_VERIFY_SERVER_PROPERTIES,
138139
TS_LUA_CONFIG_SSL_CLIENT_SNI_POLICY = TS_CONFIG_SSL_CLIENT_SNI_POLICY,
@@ -267,6 +268,7 @@ ts_lua_var_item ts_lua_http_config_vars[] = {
267268
TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_ALLOW_MULTI_RANGE),
268269
TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_REQUEST_BUFFER_ENABLED),
269270
TS_LUA_MAKE_VAR_ITEM(TS_LUA_CONFIG_HTTP_ALLOW_HALF_OPEN),
271+
TS_LUA_MAKE_VAR_ITEM(TS_CONFIG_SSL_CLIENT_VERIFY_SERVER),
270272
TS_LUA_MAKE_VAR_ITEM(TS_CONFIG_SSL_CLIENT_VERIFY_SERVER_POLICY),
271273
TS_LUA_MAKE_VAR_ITEM(TS_CONFIG_SSL_CLIENT_VERIFY_SERVER_PROPERTIES),
272274
TS_LUA_MAKE_VAR_ITEM(TS_CONFIG_SSL_CLIENT_SNI_POLICY),

src/traffic_server/InkAPI.cc

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6536,6 +6536,70 @@ TSHttpTxnStatusGet(TSHttpTxn txnp)
65366536
return static_cast<TSHttpStatus>(sm->t_state.http_return_code);
65376537
}
65386538

6539+
/* control channel for HTTP */
6540+
TSReturnCode
6541+
TSHttpTxnCntl(TSHttpTxn txnp, TSHttpCntlTypeExperimental cntl, void *data)
6542+
{
6543+
sdk_assert(sdk_sanity_check_txn(txnp) == TS_SUCCESS);
6544+
6545+
HttpSM *sm = (HttpSM *)txnp;
6546+
6547+
switch (cntl) {
6548+
case TS_HTTP_CNTL_GET_LOGGING_MODE: {
6549+
if (data == nullptr) {
6550+
return TS_ERROR;
6551+
}
6552+
6553+
intptr_t *rptr = static_cast<intptr_t *>(data);
6554+
6555+
if (sm->t_state.api_info.logging_enabled) {
6556+
*rptr = (intptr_t)TS_HTTP_CNTL_ON;
6557+
} else {
6558+
*rptr = (intptr_t)TS_HTTP_CNTL_OFF;
6559+
}
6560+
6561+
return TS_SUCCESS;
6562+
}
6563+
6564+
case TS_HTTP_CNTL_SET_LOGGING_MODE:
6565+
if (data != TS_HTTP_CNTL_ON && data != TS_HTTP_CNTL_OFF) {
6566+
return TS_ERROR;
6567+
} else {
6568+
sm->t_state.api_info.logging_enabled = (bool)data;
6569+
return TS_SUCCESS;
6570+
}
6571+
break;
6572+
6573+
case TS_HTTP_CNTL_GET_INTERCEPT_RETRY_MODE: {
6574+
if (data == nullptr) {
6575+
return TS_ERROR;
6576+
}
6577+
6578+
intptr_t *rptr = static_cast<intptr_t *>(data);
6579+
6580+
if (sm->t_state.api_info.retry_intercept_failures) {
6581+
*rptr = (intptr_t)TS_HTTP_CNTL_ON;
6582+
} else {
6583+
*rptr = (intptr_t)TS_HTTP_CNTL_OFF;
6584+
}
6585+
6586+
return TS_SUCCESS;
6587+
}
6588+
6589+
case TS_HTTP_CNTL_SET_INTERCEPT_RETRY_MODE:
6590+
if (data != TS_HTTP_CNTL_ON && data != TS_HTTP_CNTL_OFF) {
6591+
return TS_ERROR;
6592+
} else {
6593+
sm->t_state.api_info.retry_intercept_failures = (bool)data;
6594+
return TS_SUCCESS;
6595+
}
6596+
default:
6597+
return TS_ERROR;
6598+
}
6599+
6600+
return TS_ERROR;
6601+
}
6602+
65396603
TSReturnCode
65406604
TSHttpTxnCntlSet(TSHttpTxn txnp, TSHttpCntlType cntl, bool data)
65416605
{
@@ -8970,6 +9034,10 @@ _conf_to_memberp(TSOverridableConfigKey conf, OverridableHttpConfigParams *overr
89709034
// This helps avoiding compiler warnings, yet detect unhandled enum members.
89719035
case TS_CONFIG_NULL:
89729036
case TS_CONFIG_LAST_ENTRY:
9037+
9038+
// The following is not used in 9.2.x, but preserved for ABI compatibility.
9039+
case TS_CONFIG_SSL_CLIENT_VERIFY_SERVER:
9040+
89739041
break;
89749042
}
89759043

0 commit comments

Comments
 (0)