TSHTTPOVERRIDABLECONFIG(3ts)

πŸ“¦
version 9.2.5 Β· 5 versions
, in ubuntu questing

✨ NAME ✨

okay so bestie, meet TSHttpOverridableConfig β€” the TSHttpOverridableConfig API function πŸ’…. This whole vibe lives in the manual page TSHTTPOVERRIDABLECONFIG(3ts), and it's literally here to let you peek at and tweak some per-transaction config tea. no cap, it's giving very "customize one transaction, not the whole server" energy ✨.


πŸ¦‹ 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. That's the whole point, bestie β€” one transaction gets its own little config moment, and the rest of the server stays unbothered πŸ’–.

But real talk, and this part is important: 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 that the value must be changed before it is used by the transaction β€” after that, changes will not have any effect. so if you roll up late, it's giving "too late, babe" 😭.

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. noted, periodt 🫢.

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:

  • 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

okay bestie, the mapping list keeps going and we're deep in cache config territory now πŸŽ€ every single one of these is a TS_CONFIG_HTTP_* constant on the left and the exact records.config key it lines up with on the right. same deal as before, no skipping, we're doing all of them πŸ’…

  • 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

like look at that list 😭 the cache girlies really said "we contain multitudes" and honestly? iconic πŸ‘‘ notice how the constant name and the config key are basically the same thought wearing two different outfits β€” one's for your C code, one's for records.config. same vibe, different font ✨

and yeah we went from heuristic stuff to chunking stuff in one breath, which is very no thoughts, just constants of the list, but that's the order it's in and we respect the order fr fr 🫢 still more to come, don't go anywhere πŸ’–

okay continuing the lineup bestie, these are still part of the same big mapping moment, just the next chunk of it πŸ’… every constant on the left pulls from the config name on the right, no cap:

  • TS_CONFIG_HTTP_CONNECT_ATTEMPTS_MAX_RETRIES_DEAD_SERVER β€” maps to proxy.config.http.connect_attempts_max_retries_dead_server ✨
  • TS_CONFIG_HTTP_DROP_CHUNKED_TRAILERS β€” maps to proxy.config.http.drop_chunked_trailers πŸ’–
  • TS_CONFIG_HTTP_CONNECT_ATTEMPTS_MAX_RETRIES β€” maps to proxy.config.http.connect_attempts_max_retries πŸ¦‹
  • TS_CONFIG_HTTP_CONNECT_ATTEMPTS_RR_RETRIES β€” maps to proxy.config.http.connect_attempts_rr_retries πŸŽ€
  • TS_CONFIG_HTTP_CONNECT_ATTEMPTS_TIMEOUT β€” maps to proxy.config.http.connect_attempts_timeout 🌸
  • TS_CONFIG_HTTP_DEFAULT_BUFFER_SIZE β€” maps to proxy.config.http.default_buffer_size ⭐
  • TS_CONFIG_HTTP_DEFAULT_BUFFER_WATER_MARK β€” maps to proxy.config.http.default_buffer_water_mark πŸ’§
  • TS_CONFIG_HTTP_DOC_IN_CACHE_SKIP_DNS β€” maps to proxy.config.http.doc_in_cache_skip_dns πŸ”₯
  • TS_CONFIG_HTTP_DOWN_SERVER_CACHE_TIME β€” maps to proxy.config.http.down_server.cache_time πŸ’€
  • TS_CONFIG_HTTP_FLOW_CONTROL_ENABLED β€” maps to proxy.config.http.flow_control.enabled 🌊
  • TS_CONFIG_HTTP_FLOW_CONTROL_HIGH_WATER_MARK β€” maps to proxy.config.http.flow_control.high_water 🫧
  • TS_CONFIG_HTTP_FLOW_CONTROL_LOW_WATER_MARK β€” maps to proxy.config.http.flow_control.low_water 🌈
  • TS_CONFIG_HTTP_FORWARD_CONNECT_METHOD β€” maps to proxy.config.http.forward_connect_method πŸ“¬
  • TS_CONFIG_HTTP_FORWARD_PROXY_AUTH_TO_PARENT β€” maps to proxy.config.http.forward.proxy_auth_to_parent πŸ”
  • TS_CONFIG_HTTP_GLOBAL_USER_AGENT_HEADER β€” maps to proxy.config.http.global_user_agent_header 🧚
  • TS_CONFIG_HTTP_INSERT_AGE_IN_RESPONSE β€” maps to proxy.config.http.insert_age_in_response ⏳
  • TS_CONFIG_HTTP_INSERT_FORWARDED β€” maps to proxy.config.http.insert_forwarded ➑️
  • TS_CONFIG_HTTP_INSERT_REQUEST_VIA_STR β€” maps to proxy.config.http.insert_request_via_str πŸ“
  • TS_CONFIG_HTTP_INSERT_RESPONSE_VIA_STR β€” maps to proxy.config.http.insert_response_via_str πŸ“„
  • TS_CONFIG_HTTP_INSERT_SQUID_X_FORWARDED_FOR β€” maps to proxy.config.http.insert_squid_x_forwarded_for πŸ™
  • TS_CONFIG_HTTP_KEEP_ALIVE_ENABLED_IN β€” maps to proxy.config.http.keep_alive_enabled_in πŸ’œ
  • TS_CONFIG_HTTP_KEEP_ALIVE_ENABLED_OUT β€” maps to proxy.config.http.keep_alive_enabled_out πŸ’œ
  • TS_CONFIG_HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_IN β€” maps to proxy.config.http.keep_alive_no_activity_timeout_in 😴
  • TS_CONFIG_HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_OUT β€” maps to proxy.config.http.keep_alive_no_activity_timeout_out 😴

like, the pattern is so consistent it's almost soothing?? left side is the constant you'd throw in your code, right side is the config knob it's lowkey pointing at, and that's literally the whole relationship. obsessed with the symmetry honestly 🫢

and yeah we're not done yet, more of these coming, hold on to your hats πŸŽ€

  • 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
bestie the constant says PARENT_CONNECT_ATTEMPT_TIMEOUT and the config says parent_proxy.connect_attempts_timeout β€” yes, the words don't line up. that's not a typo on my end, that's literally the mapping. write it down exactly like this or it will not work, periodt. πŸ’€
  • 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
okay and this one is also giving "why are you like this" β€” the constant leads with PER_PARENT but the config string has parent_proxy sitting in the middle. same deal: copy it character for character, no vibes-based guessing. 😭
  • 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
not the post.check.content_length.enabled having two dots while post_connect_attempts_timeout has none πŸ’€ dots and underscores are load-bearing here, they are not decoration.
  • 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
the request/response header max size twins, they're matching, they're coordinated, they ate πŸ’– one says request_header_max_size, the other says response_header_max_size, and honestly the symmetry is the only peace we get in this whole list.
  • TS_CONFIG_HTTP_RESPONSE_SERVER_ENABLED β†’ proxy.config.http.response_server_enabled πŸ‘‘
  • TS_CONFIG_HTTP_RESPONSE_SERVER_STR β†’ proxy.config.http.response_server_str
heads up β€” STR is not a typo for "string" in some cute abbreviated way, it's literally the constant name, and it maps to response_server_str. keep both spellings, bestie, they're a set 🫢
  • TS_CONFIG_HTTP_SEND_HTTP11_REQUESTS β†’ proxy.config.http.send_http11_requests πŸ”₯
note the 11, not 1.1, not http_11 with an underscore β€” it's TS_CONFIG_HTTP_SEND_HTTP11_REQUESTS on the left and proxy.config.http.send_http11_requests on the right. exactly that. ⭐
  • TS_CONFIG_HTTP_SERVER_SESSION_SHARING_MATCH β†’ proxy.config.http.server_session_sharing.match πŸ’œ

and yes there's still more where that came from, we're not done yet πŸŽ€

  • 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 πŸŽ€
ok bestie so yes, TS_CONFIG_SSL_CLIENT_CERT_FILENAME literally shows up twice in this stretch β€” once up there and once at the very bottom. That's not me glitching, that's just how the table is laid out. Keep both, don't @ me πŸ’…

and we are still in the mapping table, if you can believe it. the TS_CONFIG_* name on the left is the thing you hand to the API, the proxy.config.* name on the right is the config knob it's vibing with. two names, one soul, iconic honestly ✨

  • TS_CONFIG_SSL_CLIENT_PRIVATE_KEY_FILENAME β€” maps to proxy.config.ssl.client.private_key.filename, aka where ur client's private key lives πŸ”‘ keep it secret, keep it safe fr.
  • TS_CONFIG_SSL_CLIENT_CA_CERT_FILENAME β€” maps to proxy.config.ssl.client.CA.cert.filename, the CA cert file the client checks against, so everybody knows who's who πŸŽ€.
  • TS_CONFIG_HTTP_HOST_RESOLUTION_PREFERENCE β€” maps to proxy.config.hostdb.ip_resolve, and it decides how hostnames get resolved into IPs (v4? v6? both? in what order?) β€” the whole vibe of ur resolution, honestly 🌐.
  • TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_INDEX β€” maps to proxy.config.plugin.vc.default_buffer_index, the default buffer index ur plugins' virtual connections start with πŸ’….
  • TS_CONFIG_PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK β€” maps to proxy.config.plugin.vc.default_buffer_water_mark, the default water mark for those plugin virtual connection buffers πŸ“Š.
  • TS_CONFIG_NET_SOCK_NOTSENT_LOWAT β€” maps to proxy.config.net.sock_notsent_lowat, the "not sent" low-water mark on the socket, so u control how much unsent data is chilling in the buffer before the kernel gets told to pipe down 🌊.
  • TS_CONFIG_BODY_FACTORY_RESPONSE_SUPPRESSION_MODE β€” maps to proxy.config.body_factory.response_suppression_mode, which is how the body factory decides when to suppress a response body, lowkey iconic behavior 🫢.

✨ EXAMPLES ✨

Bestie, here's the moment u've been waiting for β€” actual code πŸŽ‰. This one turns on 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;
}

Like, look at it. It's giving flow control πŸ’§βœ¨. TS_CONFIG_HTTP_FLOW_CONTROL_ENABLED gets flipped to 1 (on, slay), then the high and low water marks get set to 262144 and 65536 respectively. No cap, that's the whole example 🧚.


🌸 SEE ALSO 🌸

  • TSAPI(3ts) β€” go read it, it's the whole API neighborhood and it ate πŸ’–.

2026, dev@trafficserver.apache.org


And that's a wrap on the whole page, bestie πŸŽ€βœ¨ thank u for reading all 6 parts, u literally have main character energy for making it to the end. This was version 9.2, dated Feb 12, 2026, and the page is TSHTTPOVERRIDABLECONFIG(3ts) β€” periodt πŸ’…πŸ¦‹. Go forth and override ur configs responsibly 🫢🌈.

πŸ“¦ where this page comes from