---
name: "TSHttpOverridableConfig"
section: "3ts"
platform: "linux"
package: "trafficserver-dev"
version: "9.2.5+ds-0+deb12u4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/TSHttpOverridableConfig"
---

# TSHttpOverridableConfig(3ts)

TSHttpOverridableConfig API function

## NAME

TSHttpOverridableConfig - TSHttpOverridableConfig API function

## SYNOPSIS

```
#include <ts/ts.h>
```

- ***TSReturnCode* TSHttpTxnConfigIntSet(*TSHttpTxn* txnp, *TSOverridableConfigKey* key, *TSMgmtInt* value)**

  - ***TSReturnCode* TSHttpTxnConfigIntGet(*TSHttpTxn* txnp, *TSOverridableConfigKey* key, *TSMgmtInt* \*value)**

  - ***TSReturnCode* TSHttpTxnConfigFloatSet(*TSHttpTxn* txnp, *TSOverridableConfigKey* key, *TSMgmtFloat* value)**

  - ***TSReturnCode* TSHttpTxnConfigFloatGet(*TSHttpTxn* txnp, *TSOverridableConfigKey* key, *TSMgmtFloat* \*value)**

  - ***TSReturnCode* TSHttpTxnConfigStringSet(*TSHttpTxn* txnp, *TSOverridableConfigKey* key, const char \*value, int length)**

  - ***TSReturnCode* TSHttpTxnConfigStringGet(*TSHttpTxn* txnp, *TSOverridableConfigKey* key, const char \*\*value, int \*length)**

  - ***TSReturnCode* TSHttpTxnConfigFind(const char \*name, int length, *TSOverridableConfigKey* \*key, *TSRecordDataType* \*type)**

  ## DESCRIPTION

Some of the values that are set in *records.config* can be changed for a specific transaction. It is important to note that these functions change the configuration values stored for the transaction, which is not quite the same as changing the actual operating values of the transaction. The critical effect is the value must be changed before it is used by the transaction - after that, changes will not have any effect.

All of the **...Get** functions store the internal value in the storage indicated by the *value* argument. For strings *length\** will receive the length of the string.

The values are identified by the enumeration *TSOverridableConfigKey*. String values can be used indirectly by first passing them to *TSHttpTxnConfigFind()* which, if the string matches an overridable value, return the key and data type.

## CONFIGURATIONS

Testing *TS\_CONFIG\_BODY\_FACTORY\_TEMPLATE\_BASE*.

The following configurations (from **records.config**) are overridable:

| | |
| --- | --- |
| TSOverridableConfigKey Value | Configuration Value |
| *TS\_CONFIG\_BODY\_FACTORY\_TEMPLATE\_BASE* | *proxy.config.body\_factory.template\_base* |
| *TS\_CONFIG\_HTTP\_ALLOW\_HALF\_OPEN* | *proxy.config.http.allow\_half\_open* |
| *TS\_CONFIG\_HTTP\_ALLOW\_MULTI\_RANGE* | *proxy.config.http.allow\_multi\_range* |
| *TS\_CONFIG\_HTTP\_ANONYMIZE\_INSERT\_CLIENT\_IP* | *proxy.config.http.insert\_client\_ip* |
| *TS\_CONFIG\_HTTP\_ANONYMIZE\_REMOVE\_CLIENT\_IP* | *proxy.config.http.anonymize\_remove\_client\_ip* |
| *TS\_CONFIG\_HTTP\_ANONYMIZE\_REMOVE\_COOKIE* | *proxy.config.http.anonymize\_remove\_cookie* |
| *TS\_CONFIG\_HTTP\_ANONYMIZE\_REMOVE\_FROM* | *proxy.config.http.anonymize\_remove\_from* |
| *TS\_CONFIG\_HTTP\_ANONYMIZE\_REMOVE\_REFERER* | *proxy.config.http.anonymize\_remove\_referer* |
| *TS\_CONFIG\_HTTP\_ANONYMIZE\_REMOVE\_USER\_AGENT* | *proxy.config.http.anonymize\_remove\_user\_agent* |
| *TS\_CONFIG\_HTTP\_ATTACH\_SERVER\_SESSION\_TO\_CLIENT* | *proxy.config.http.attach\_server\_session\_to\_client* |
| *TS\_CONFIG\_HTTP\_MAX\_PROXY\_CYCLES* | *proxy.config.http.max\_proxy\_cycles* |
| *TS\_CONFIG\_HTTP\_AUTH\_SERVER\_SESSION\_PRIVATE* | *proxy.config.http.auth\_server\_session\_private* |
| *TS\_CONFIG\_HTTP\_BACKGROUND\_FILL\_ACTIVE\_TIMEOUT* | *proxy.config.http.background\_fill\_active\_timeout* |
| *TS\_CONFIG\_HTTP\_BACKGROUND\_FILL\_COMPLETED\_THRESHOLD* | *proxy.config.http.background\_fill\_completed\_threshold* |
| *TS\_CONFIG\_HTTP\_CACHE\_CACHE\_RESPONSES\_TO\_COOKIES* | *proxy.config.http.cache.cache\_responses\_to\_cookies* |
| *TS\_CONFIG\_HTTP\_CACHE\_CACHE\_URLS\_THAT\_LOOK\_DYNAMIC* | *proxy.config.http.cache.cache\_urls\_that\_look\_dynamic* |
| *TS\_CONFIG\_HTTP\_CACHE\_GENERATION* | *proxy.config.http.cache.generation* |
| *TS\_CONFIG\_HTTP\_CACHE\_GUARANTEED\_MAX\_LIFETIME* | *proxy.config.http.cache.guaranteed\_max\_lifetime* |
| *TS\_CONFIG\_HTTP\_CACHE\_GUARANTEED\_MIN\_LIFETIME* | *proxy.config.http.cache.guaranteed\_min\_lifetime* |
| *TS\_CONFIG\_HTTP\_CACHE\_HEURISTIC\_LM\_FACTOR* | *proxy.config.http.cache.heuristic\_lm\_factor* |
| *TS\_CONFIG\_HTTP\_CACHE\_HEURISTIC\_MAX\_LIFETIME* | *proxy.config.http.cache.heuristic\_max\_lifetime* |
| *TS\_CONFIG\_HTTP\_CACHE\_HEURISTIC\_MIN\_LIFETIME* | *proxy.config.http.cache.heuristic\_min\_lifetime* |
| *TS\_CONFIG\_HTTP\_CACHE\_HTTP* | *proxy.config.http.cache.http* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_ACCEPT\_CHARSET\_MISMATCH* | *proxy.config.http.cache.ignore\_accept\_charset\_mismatch* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_ACCEPT\_ENCODING\_MISMATCH* | *proxy.config.http.cache.ignore\_accept\_encoding\_mismatch* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_ACCEPT\_LANGUAGE\_MISMATCH* | *proxy.config.http.cache.ignore\_accept\_language\_mismatch* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_ACCEPT\_MISMATCH* | *proxy.config.http.cache.ignore\_accept\_mismatch* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_AUTHENTICATION* | *proxy.config.http.cache.ignore\_authentication* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_CLIENT\_CC\_MAX\_AGE* | *proxy.config.http.cache.ignore\_client\_cc\_max\_age* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_CLIENT\_NO\_CACHE* | *proxy.config.http.cache.ignore\_client\_no\_cache* |
| *TS\_CONFIG\_HTTP\_CACHE\_IGNORE\_SERVER\_NO\_CACHE* | *proxy.config.http.cache.ignore\_server\_no\_cache* |
| *TS\_CONFIG\_HTTP\_CACHE\_IMS\_ON\_CLIENT\_NO\_CACHE* | *proxy.config.http.cache.ims\_on\_client\_no\_cache* |
| *TS\_CONFIG\_HTTP\_CACHE\_MAX\_OPEN\_READ\_RETRIES* | *proxy.config.http.cache.max\_open\_read\_retries* |
| *TS\_CONFIG\_HTTP\_CACHE\_MAX\_OPEN\_WRITE\_RETRIES* | *proxy.config.http.cache.max\_open\_write\_retries* |
| *TS\_CONFIG\_HTTP\_CACHE\_MAX\_STALE\_AGE* | *proxy.config.http.cache.max\_stale\_age* |
| *TS\_CONFIG\_HTTP\_CACHE\_OPEN\_READ\_RETRY\_TIME* | *proxy.config.http.cache.open\_read\_retry\_time* |
| *TS\_CONFIG\_HTTP\_CACHE\_OPEN\_WRITE\_FAIL\_ACTION* | *proxy.config.http.cache.open\_write\_fail\_action* |
| *TS\_CONFIG\_HTTP\_CACHE\_RANGE\_LOOKUP* | *proxy.config.http.cache.range.lookup* |
| *TS\_CONFIG\_HTTP\_CACHE\_RANGE\_WRITE* | *proxy.config.http.cache.range.write* |
| *TS\_CONFIG\_HTTP\_CACHE\_REQUIRED\_HEADERS* | *proxy.config.http.cache.required\_headers* |
| *TS\_CONFIG\_HTTP\_CACHE\_WHEN\_TO\_REVALIDATE* | *proxy.config.http.cache.when\_to\_revalidate* |
| *TS\_CONFIG\_HTTP\_CHUNKING\_ENABLED* | *proxy.config.http.chunking\_enabled* |
| *TS\_CONFIG\_HTTP\_CHUNKING\_SIZE* | *proxy.config.http.chunking.size* |
| *TS\_CONFIG\_HTTP\_STRICT\_CHUNK\_PARSING* | *proxy.config.http.strict\_chunk\_parsing* |
| *TS\_CONFIG\_HTTP\_CONNECT\_ATTEMPTS\_MAX\_RETRIES\_DEAD\_SERVER* | *proxy.config.http.connect\_attempts\_max\_retries\_dead\_server* |
| *TS\_CONFIG\_HTTP\_DROP\_CHUNKED\_TRAILERS* | *proxy.config.http.drop\_chunked\_trailers* |
| *TS\_CONFIG\_HTTP\_CONNECT\_ATTEMPTS\_MAX\_RETRIES* | *proxy.config.http.connect\_attempts\_max\_retries* |
| *TS\_CONFIG\_HTTP\_CONNECT\_ATTEMPTS\_RR\_RETRIES* | *proxy.config.http.connect\_attempts\_rr\_retries* |
| *TS\_CONFIG\_HTTP\_CONNECT\_ATTEMPTS\_TIMEOUT* | *proxy.config.http.connect\_attempts\_timeout* |
| *TS\_CONFIG\_HTTP\_DEFAULT\_BUFFER\_SIZE* | *proxy.config.http.default\_buffer\_size* |
| *TS\_CONFIG\_HTTP\_DEFAULT\_BUFFER\_WATER\_MARK* | *proxy.config.http.default\_buffer\_water\_mark* |
| *TS\_CONFIG\_HTTP\_DOC\_IN\_CACHE\_SKIP\_DNS* | *proxy.config.http.doc\_in\_cache\_skip\_dns* |
| *TS\_CONFIG\_HTTP\_DOWN\_SERVER\_CACHE\_TIME* | *proxy.config.http.down\_server.cache\_time* |
| *TS\_CONFIG\_HTTP\_FLOW\_CONTROL\_ENABLED* | *proxy.config.http.flow\_control.enabled* |
| *TS\_CONFIG\_HTTP\_FLOW\_CONTROL\_HIGH\_WATER\_MARK* | *proxy.config.http.flow\_control.high\_water* |
| *TS\_CONFIG\_HTTP\_FLOW\_CONTROL\_LOW\_WATER\_MARK* | *proxy.config.http.flow\_control.low\_water* |
| *TS\_CONFIG\_HTTP\_FORWARD\_CONNECT\_METHOD* | *proxy.config.http.forward\_connect\_method* |
| *TS\_CONFIG\_HTTP\_FORWARD\_PROXY\_AUTH\_TO\_PARENT* | *proxy.config.http.forward.proxy\_auth\_to\_parent* |
| *TS\_CONFIG\_HTTP\_GLOBAL\_USER\_AGENT\_HEADER* | *proxy.config.http.global\_user\_agent\_header* |
| *TS\_CONFIG\_HTTP\_INSERT\_AGE\_IN\_RESPONSE* | *proxy.config.http.insert\_age\_in\_response* |
| *TS\_CONFIG\_HTTP\_INSERT\_FORWARDED* | *proxy.config.http.insert\_forwarded* |
| *TS\_CONFIG\_HTTP\_INSERT\_REQUEST\_VIA\_STR* | *proxy.config.http.insert\_request\_via\_str* |
| *TS\_CONFIG\_HTTP\_INSERT\_RESPONSE\_VIA\_STR* | *proxy.config.http.insert\_response\_via\_str* |
| *TS\_CONFIG\_HTTP\_INSERT\_SQUID\_X\_FORWARDED\_FOR* | *proxy.config.http.insert\_squid\_x\_forwarded\_for* |
| *TS\_CONFIG\_HTTP\_KEEP\_ALIVE\_ENABLED\_IN* | *proxy.config.http.keep\_alive\_enabled\_in* |
| *TS\_CONFIG\_HTTP\_KEEP\_ALIVE\_ENABLED\_OUT* | *proxy.config.http.keep\_alive\_enabled\_out* |
| *TS\_CONFIG\_HTTP\_KEEP\_ALIVE\_NO\_ACTIVITY\_TIMEOUT\_IN* | *proxy.config.http.keep\_alive\_no\_activity\_timeout\_in* |
| *TS\_CONFIG\_HTTP\_KEEP\_ALIVE\_NO\_ACTIVITY\_TIMEOUT\_OUT* | *proxy.config.http.keep\_alive\_no\_activity\_timeout\_out* |
| *TS\_CONFIG\_HTTP\_KEEP\_ALIVE\_POST\_OUT* | *proxy.config.http.keep\_alive\_post\_out* |
| *TS\_CONFIG\_HTTP\_NEGATIVE\_CACHING\_ENABLED* | *proxy.config.http.negative\_caching\_enabled* |
| *TS\_CONFIG\_HTTP\_NEGATIVE\_CACHING\_LIFETIME* | *proxy.config.http.negative\_caching\_lifetime* |
| *TS\_CONFIG\_HTTP\_NEGATIVE\_REVALIDATING\_ENABLED* | *proxy.config.http.negative\_revalidating\_enabled* |
| *TS\_CONFIG\_HTTP\_NEGATIVE\_REVALIDATING\_LIFETIME* | *proxy.config.http.negative\_revalidating\_lifetime* |
| *TS\_CONFIG\_HTTP\_NORMALIZE\_AE* | *proxy.config.http.normalize\_ae* |
| *TS\_CONFIG\_HTTP\_NUMBER\_OF\_REDIRECTIONS* | *proxy.config.http.number\_of\_redirections* |
| *TS\_CONFIG\_HTTP\_PARENT\_CONNECT\_ATTEMPT\_TIMEOUT* | *proxy.config.http.parent\_proxy.connect\_attempts\_timeout* |
| *TS\_CONFIG\_HTTP\_PARENT\_PROXY\_FAIL\_THRESHOLD* | *proxy.config.http.parent\_proxy.fail\_threshold* |
| *TS\_CONFIG\_HTTP\_PARENT\_PROXY\_RETRY\_TIME* | *proxy.config.http.parent\_proxy.retry\_time* |
| *TS\_CONFIG\_HTTP\_PARENT\_PROXY\_TOTAL\_CONNECT\_ATTEMPTS* | *proxy.config.http.parent\_proxy.total\_connect\_attempts* |
| *TS\_CONFIG\_HTTP\_PER\_PARENT\_CONNECT\_ATTEMPTS* | *proxy.config.http.parent\_proxy.per\_parent\_connect\_attempts* |
| *TS\_CONFIG\_HTTP\_PER\_SERVER\_CONNECTION\_MATCH* | *proxy.config.http.per\_server.connection.match* |
| *TS\_CONFIG\_HTTP\_PER\_SERVER\_CONNECTION\_MAX* | *proxy.config.http.per\_server.connection.max* |
| *TS\_CONFIG\_HTTP\_POST\_CHECK\_CONTENT\_LENGTH\_ENABLED* | *proxy.config.http.post.check.content\_length.enabled* |
| *TS\_CONFIG\_HTTP\_POST\_CONNECT\_ATTEMPTS\_TIMEOUT* | *proxy.config.http.post\_connect\_attempts\_timeout* |
| *TS\_CONFIG\_HTTP\_REDIRECT\_USE\_ORIG\_CACHE\_KEY* | *proxy.config.http.redirect\_use\_orig\_cache\_key* |
| *TS\_CONFIG\_HTTP\_REQUEST\_BUFFER\_ENABLED* | *proxy.config.http.request\_buffer\_enabled* |
| *TS\_CONFIG\_HTTP\_REQUEST\_HEADER\_MAX\_SIZE* | *proxy.config.http.request\_header\_max\_size* |
| *TS\_CONFIG\_HTTP\_RESPONSE\_HEADER\_MAX\_SIZE* | *proxy.config.http.response\_header\_max\_size* |
| *TS\_CONFIG\_HTTP\_RESPONSE\_SERVER\_ENABLED* | *proxy.config.http.response\_server\_enabled* |
| *TS\_CONFIG\_HTTP\_RESPONSE\_SERVER\_STR* | *proxy.config.http.response\_server\_str* |
| *TS\_CONFIG\_HTTP\_SEND\_HTTP11\_REQUESTS* | *proxy.config.http.send\_http11\_requests* |
| *TS\_CONFIG\_HTTP\_SERVER\_SESSION\_SHARING\_MATCH* | *proxy.config.http.server\_session\_sharing.match* |
| *TS\_CONFIG\_HTTP\_SLOW\_LOG\_THRESHOLD* | *proxy.config.http.slow.log.threshold* |
| *TS\_CONFIG\_HTTP\_TRANSACTION\_ACTIVE\_TIMEOUT\_IN* | *proxy.config.http.transaction\_active\_timeout\_in* |
| *TS\_CONFIG\_HTTP\_TRANSACTION\_ACTIVE\_TIMEOUT\_OUT* | *proxy.config.http.transaction\_active\_timeout\_out* |
| *TS\_CONFIG\_HTTP\_TRANSACTION\_NO\_ACTIVITY\_TIMEOUT\_IN* | *proxy.config.http.transaction\_no\_activity\_timeout\_in* |
| *TS\_CONFIG\_HTTP\_TRANSACTION\_NO\_ACTIVITY\_TIMEOUT\_OUT* | *proxy.config.http.transaction\_no\_activity\_timeout\_out* |
| *TS\_CONFIG\_HTTP\_UNCACHEABLE\_REQUESTS\_BYPASS\_PARENT* | *proxy.config.http.uncacheable\_requests\_bypass\_parent* |
| *TS\_CONFIG\_NET\_SOCK\_OPTION\_FLAG\_OUT* | *proxy.config.net.sock\_option\_flag\_out* |
| *TS\_CONFIG\_NET\_SOCK\_PACKET\_MARK\_OUT* | *proxy.config.net.sock\_packet\_mark\_out* |
| *TS\_CONFIG\_NET\_SOCK\_PACKET\_TOS\_OUT* | *proxy.config.net.sock\_packet\_tos\_out* |
| *TS\_CONFIG\_NET\_SOCK\_RECV\_BUFFER\_SIZE\_OUT* | *proxy.config.net.sock\_recv\_buffer\_size\_out* |
| *TS\_CONFIG\_NET\_SOCK\_SEND\_BUFFER\_SIZE\_OUT* | *proxy.config.net.sock\_send\_buffer\_size\_out* |
| *TS\_CONFIG\_PARENT\_FAILURES\_UPDATE\_HOSTDB* | *proxy.config.http.parent\_proxy.mark\_down\_hostdb* |
| *TS\_CONFIG\_SRV\_ENABLED* | *proxy.config.srv\_enabled* |
| *TS\_CONFIG\_SSL\_CLIENT\_CERT\_FILENAME* | *proxy.config.ssl.client.cert.filename* |
| *TS\_CONFIG\_SSL\_CERT\_FILEPATH* | *proxy.config.ssl.client.cert.path* |
| *TS\_CONFIG\_SSL\_CLIENT\_VERIFY\_SERVER\_PROPERTIES* | *proxy.config.ssl.client.verify.server.properties* |
| *TS\_CONFIG\_SSL\_CLIENT\_VERIFY\_SERVER\_POLICY* | *proxy.config.ssl.client.verify.server.policy* |
| *TS\_CONFIG\_SSL\_CLIENT\_SNI\_POLICY* | *proxy.config.ssl.client.sni\_policy* |
| *TS\_CONFIG\_SSL\_HSTS\_INCLUDE\_SUBDOMAINS* | *proxy.config.ssl.hsts\_include\_subdomains* |
| *TS\_CONFIG\_SSL\_HSTS\_MAX\_AGE* | *proxy.config.ssl.hsts\_max\_age* |
| *TS\_CONFIG\_URL\_REMAP\_PRISTINE\_HOST\_HDR* | *proxy.config.url\_remap.pristine\_host\_hdr* |
| *TS\_CONFIG\_WEBSOCKET\_ACTIVE\_TIMEOUT* | *proxy.config.websocket.active\_timeout* |
| *TS\_CONFIG\_WEBSOCKET\_NO\_ACTIVITY\_TIMEOUT* | *proxy.config.websocket.no\_activity\_timeout* |
| *TS\_CONFIG\_SSL\_CLIENT\_CERT\_FILENAME* | *proxy.config.ssl.client.cert.filename* |
| *TS\_CONFIG\_SSL\_CLIENT\_PRIVATE\_KEY\_FILENAME* | *proxy.config.ssl.client.private\_key.filename* |
| *TS\_CONFIG\_SSL\_CLIENT\_CA\_CERT\_FILENAME* | *proxy.config.ssl.client.CA.cert.filename* |
| *TS\_CONFIG\_HTTP\_HOST\_RESOLUTION\_PREFERENCE* | *proxy.config.hostdb.ip\_resolve* |
| *TS\_CONFIG\_PLUGIN\_VC\_DEFAULT\_BUFFER\_INDEX* | *proxy.config.plugin.vc.default\_buffer\_index* |
| *TS\_CONFIG\_PLUGIN\_VC\_DEFAULT\_BUFFER\_WATER\_MARK* | *proxy.config.plugin.vc.default\_buffer\_water\_mark* |
| *TS\_CONFIG\_NET\_SOCK\_NOTSENT\_LOWAT* | *proxy.config.net.sock\_notsent\_lowat* |
| *TS\_CONFIG\_BODY\_FACTORY\_RESPONSE\_SUPPRESSION\_MODE* | *proxy.config.body\_factory.response\_suppression\_mode* |

## EXAMPLES

Enable *transaction buffer control* with a high water mark of **262144** and a low water mark of **65536**.

```
int callback(TSCont contp, TSEvent event, void* data)
{
   TSHttpTxn txnp = static_cast<TSHttpTxn>(data);
   TSHttpTxnConfigIntSet(txnp, TS_CONFIG_HTTP_FLOW_CONTROL_ENABLED, 1);
   TSHttpTxnConfigIntSet(txnp, TS_CONFIG_HTTP_FLOW_CONTROL_HIGH_WATER_MARK, 262144);
   TSHttpTxnConfigIntSet(txnp, TS_CONFIG_HTTP_FLOW_CONTROL_LOWER_WATER_MARK, 65536);
   return 0;
}
```

## SEE ALSO

**[TSAPI(3ts)](/TSAPI/3ts.md)**

## COPYRIGHT

2026, dev@trafficserver.apache.org
