| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Reject header fields exceeding the uint16 field-length limit A header field name and value are each stored with a 16-bit length, so neither can exceed UINT16_MAX (65535) bytes. Enforce that bound consistently rather than accepting longer input: the MIME field setters reject an over-limit name or value, HTTP/1.1 returns a 400, HPACK returns COMPRESSION_ERROR, and the TS field APIs return TS_ERROR. proxy.config.http.header_field_max_size is validated to [0-65535] and clamped to UINT16_MAX. Adds unit and H1/H2 gold-test coverage. | 1 个月前 | |
Share HTTP accept properties (#13514) Each HTTP protocol acceptor keeps a separate copy of proxy-port properties, so adding or consuming one requires protocol-specific plumbing and can leave newer protocols without configured defaults. This patch introduces a common HTTP acceptor base that shares one immutable property set per proxy port and retains the source HttpProxyPort. Sessions track that acceptor, while transactions copy mutable outbound settings at transaction start so overrides stay isolated. Handoff paths keep their acceptors alive for the resulting session. Fixes: #3427 | 8 天前 | |
Share HTTP accept properties (#13514) Each HTTP protocol acceptor keeps a separate copy of proxy-port properties, so adding or consuming one requires protocol-specific plumbing and can leave newer protocols without configured defaults. This patch introduces a common HTTP acceptor base that shares one immutable property set per proxy port and retains the source HttpProxyPort. Sessions track that acceptor, while transactions copy mutable outbound settings at transaction start so overrides stay isolated. Handoff paths keep their acceptors alive for the resulting session. Fixes: #3427 | 8 天前 | |
Share HTTP accept properties (#13514) Each HTTP protocol acceptor keeps a separate copy of proxy-port properties, so adding or consuming one requires protocol-specific plumbing and can leave newer protocols without configured defaults. This patch introduces a common HTTP acceptor base that shares one immutable property set per proxy port and retains the source HttpProxyPort. Sessions track that acceptor, while transactions copy mutable outbound settings at transaction start so overrides stay isolated. Handoff paths keep their acceptors alive for the resulting session. Fixes: #3427 | 8 天前 | |
Compact response HTTP version log fields (#13568) The sshv and csshv access log fields store two one-byte version components as separate 64-bit integers, consuming 16 bytes per entry and publishing dINT framing in binary log schemas. This patch addresses the overhead by marshaling major.minor strings in one 8-byte-aligned slot while preserving the existing HTTP/major.minor ASCII form. It updates v3 schema expectations and regression coverage for both fields. Fixes: #12891 | 16 天前 | |
Cleanup: Use std::unique_ptr where easily applicable (#12238) * Use unique_ptr in Cache _spans in CacheTool.cc * Use unique_ptr in src/proxy/http/remap/unit-tests/test_PluginFactory.cc * Use unique_ptr in src/iocore/aio/test_AIO.cc * Use unique_ptr for m_DNSSrvrTable field in SplitDNS struct * Use unique_ptr in src/proxy/hdrs/unit_tests/test_Hdrs.cc * Use unique_ptr in src/tscore/unit_tests/test_arena.cc * Use unique_ptr for hash field in struct ATSConsistentHash * Use unique_ptr for state_ field in atscppapi::Url class * Use unique_ptr in cachekey plugin * Use unique_ptr in rate_limit plugin * Use unique_ptr in access_control plugin * Use unique_ptr in inliner plugin * Use unique_ptr in cookie_remap plugin * Use unique_ptr in header_rewrite plugin * Use unique_ptr in src/tscore/unit_tests/test_PriorityQueue.cc * Use unique_ptr in atscppapi::Response * Use unique_ptr in atscppapi::Request * Use unique_ptr in atscppapi::AsyncHttpFetch * Use unique_ptr in atscppapi::Logger * Use unique_ptr in include/tscpp/api/Headers.h * Use unique_ptr in include/tscpp/api/GzipInflateTransformation.h * Use unique_ptr in include/tscpp/api/Transaction.h * Use unique_ptr in include/tscpp/api/TransactionPlugin.h * Use unique_ptr in include/tscpp/api/ClientRequest.h * Use unique_ptr in include/tscpp/api/GzipDeflateTransformation.h * Use unique_ptr in include/tscpp/api/GlobalPlugin.h * Use unique_ptr in include/tscpp/api/TransformationPlugin.h * Use unique_ptr in include/tscore/BaseLogFile.h * Use unique_ptr in src/traffic_top/stats.h * Use unique_ptr in src/traffic_cache_tool/CacheScan.h * Use unique_ptr in include/proxy/shared/DiagsConfig.h * Use unique_ptr in include/proxy/logging/LogObject.h * Use unique_ptr in include/proxy/logging/LogFile.h * Use unique_ptr in src/proxy/http3/test/test_QPACK.cc * Use unique_ptr in src/proxy/http2/unit_tests/test_Http2DependencyTree.cc * Use unique_ptr in include/proxy/http/HttpBodyFactory.h * Use unique_ptr in include/proxy/ParentConsistentHash.h * Use unique_ptr in include/proxy/ControlMatcher.h * Use unique_ptr in include/proxy/ControlBase.h * Use unique_ptr in include/mgmt/config/FileManager.h * Use unique_ptr in src/iocore/net/P_SSLCertLookup.h * Use unique_ptr in src/iocore/net/P_QUICPacketHandler.h * Use unique_ptr in src/iocore/net/P_QUICNetVConnection.h * Use unique_ptr in src/iocore/hostdb/test_RefCountCache.cc * Use unique_ptr in src/iocore/hostdb/benchmark_HostDB.cc * Use unique_ptr in src/iocore/hostdb/P_RefCountCache.h * Use uqniue_ptr in src/iocore/eventsystem/RecProcess.cc * Use unique_ptr in src/iocore/cache/CacheTest.cc * Use unique_ptr in src/iocore/cache/P_CacheHosting.h * Use unique_ptr in include/iocore/net/quic/MTHashTable.h * Use unique_ptr in include/iocore/net/quic/QUICApplicationMap.h * Use unique_ptr in include/proxy/http2/Http2DependencyTree.h * Use unique_ptr in include/tsutil/Metrics.h * Use unique_ptr in plugins/experimental/magick/magick.cc * Use unique_ptr in plugins/experimental/mp4/mp4_common.h * Use unique_ptr in plugins/experimental/mp4/mp4_meta.h * Use unique_ptr in plugins/experimental/rate_limit/sni_selector.h * Use unique_ptr in plugins/header_rewrite/value.h * Use unique_ptr in plugins/multiplexer/fetcher.h * Use unique_ptr in plugins/prefetch/pattern.h * Use unique_ptr in src/iocore/cache/P_CacheDisk.h * Use unique_ptr in src/iocore/cache/P_CacheHosting.h * Use unique_ptr and vector for gdisks in CacheProcessor.cc * Use unique_ptr in tools/benchmark/benchmark_ProxyAllocator.cc * Use get() instead of &* of std::unique_ptr | 1 年前 | |
ATS Configuration Reload with observability/tracing - Token model (#12892) ATS Configuration Reload with observability/tracing — Token model Replace the fire-and-forget configuration reload mechanism with a new token-based, observable reload framework. Every reload operation is now assigned a unique token, tracked through a task tree, and queryable via CLI or JSONRPC at any point after submission. Core components introduced: - ConfigRegistry: centralized singleton for config file registration, filename records, trigger records, and reload handlers. Replaces the scattered registration across AddConfigFilesHere.cc and individual modules. - ReloadCoordinator: manages reload session lifecycle including token generation, concurrency control (--force to override), timeout detection, and rolling history. - ConfigReloadTask: tracks a single reload as a tree of sub-tasks with per-handler status, timings, and logs. - ConfigContext: lightweight context passed to handlers providing in_progress(), complete(), fail(), log(), supplied_yaml(), and add_dependent_ctx(). Safe no-op at startup when no reload is active. - ConfigReloadProgress: periodic checker that detects stuck tasks and marks them as TIMEOUT. New traffic_ctl commands: - config reload [-m] [-t <token>] [-d @file] [--force] - config status [-t <token>] [-c all] All commands support --format json for automation and CI pipelines. New JSONRPC APIs: - admin_config_reload: unified file-based or inline reload with token, force, and configs parameters. - get_reload_config_status: query reload status by token or get the last N reloads. Migrated config handlers to ConfigRegistry: ip_allow, cache_control, cache_hosting, parent_proxy, split_dns, remap, logging, ssl_client_coordinator (with sni.yaml and ssl_multicert.config as dependencies), ssl_ticket_key, records, and pre-warm. Static configs (storage, volume, plugin, socks, jsonrpc) registered as inventory-only. Removed legacy ConfigUpdateHandler/ConfigUpdateContinuation from ConfigProcessor.h. Removed AddConfigFilesHere.cc in favor of per-module self-registration. Fixed duplicate handler execution for configs with multiple trigger records (e.g. ssl_client_coordinator) by deduplicating against the ConfigReloadTask subtask tree. Added RecFlushConfigUpdateCbs() to synchronously fire pending record callbacks after rereadConfig(), ensuring all subtasks are registered before the first status poll. New configuration records: - proxy.config.admin.reload.timeout (default: 1h) - proxy.config.admin.reload.check_interval (default: 2s) Backward compatible: existing `traffic_ctl config reload` works as before; internally it now uses the new framework with automatic token assignment and tracking. | 5 个月前 | |
Fix length check of MethodMod:check | 1 个月前 | |
Improve config reload error reporting with severity-aware task logs (#13090) * Add severity-aware logging to config reload framework Unify diagnostic logging (diags.log) with ConfigContext task logs (traffic_ctl config status) via CfgLoad* macros. Each task log entry now carries a DiagsLevel severity, enabling --min-level filtering in traffic_ctl and severity tags in output ([Note], [Err], etc). Reload summaries are logged to diags.log after a grace period, with detailed per-subtask dumps under the config.reload debug tag. Fixes: #12963 | 3 个月前 | |
Fix uninitialized pointer/field members in core classes (#12976) Initialize members flagged by Coverity: - CID 1497424: `HttpTransact::_ResponseAction` (value-init `TSResponseAction`) - CID 1497385, CID 1497345: `ProxySession::accept_options` -> `nullptr` - CID 1021718: `FetchSM::callback_events` (value-init `TSFetchEvent`) - CID 1508857: `HTTPStatsConfig::cont` -> `nullptr` | 5 个月前 | |
Use ts::bravo::shared_mutex for host status lock (#13367) HostStatus lookups sit on the parent-selection hot path and are overwhelmingly reads, so replace the ink_rwlock with the reader-biased BRAVO shared_mutex for better read scaling under contention. Readers take ts::bravo::shared_lock (Token-aware); writers use std::scoped_lock. | 1 个月前 | |
ATS Configuration Reload with observability/tracing - Token model (#12892) ATS Configuration Reload with observability/tracing — Token model Replace the fire-and-forget configuration reload mechanism with a new token-based, observable reload framework. Every reload operation is now assigned a unique token, tracked through a task tree, and queryable via CLI or JSONRPC at any point after submission. Core components introduced: - ConfigRegistry: centralized singleton for config file registration, filename records, trigger records, and reload handlers. Replaces the scattered registration across AddConfigFilesHere.cc and individual modules. - ReloadCoordinator: manages reload session lifecycle including token generation, concurrency control (--force to override), timeout detection, and rolling history. - ConfigReloadTask: tracks a single reload as a tree of sub-tasks with per-handler status, timings, and logs. - ConfigContext: lightweight context passed to handlers providing in_progress(), complete(), fail(), log(), supplied_yaml(), and add_dependent_ctx(). Safe no-op at startup when no reload is active. - ConfigReloadProgress: periodic checker that detects stuck tasks and marks them as TIMEOUT. New traffic_ctl commands: - config reload [-m] [-t <token>] [-d @file] [--force] - config status [-t <token>] [-c all] All commands support --format json for automation and CI pipelines. New JSONRPC APIs: - admin_config_reload: unified file-based or inline reload with token, force, and configs parameters. - get_reload_config_status: query reload status by token or get the last N reloads. Migrated config handlers to ConfigRegistry: ip_allow, cache_control, cache_hosting, parent_proxy, split_dns, remap, logging, ssl_client_coordinator (with sni.yaml and ssl_multicert.config as dependencies), ssl_ticket_key, records, and pre-warm. Static configs (storage, volume, plugin, socks, jsonrpc) registered as inventory-only. Removed legacy ConfigUpdateHandler/ConfigUpdateContinuation from ConfigProcessor.h. Removed AddConfigFilesHere.cc in favor of per-module self-registration. Fixed duplicate handler execution for configs with multiple trigger records (e.g. ssl_client_coordinator) by deduplicating against the ConfigReloadTask subtask tree. Added RecFlushConfigUpdateCbs() to synchronously fire pending record callbacks after rereadConfig(), ensuring all subtasks are registered before the first status poll. New configuration records: - proxy.config.admin.reload.timeout (default: 1h) - proxy.config.admin.reload.check_interval (default: 2s) Backward compatible: existing `traffic_ctl config reload` works as before; internally it now uses the new framework with automatic token assignment and tracking. | 5 个月前 | |
Fix: difference_msec epoch leak when start milestone is unset (#12897) Check both start and end milestones in difference_msec() -- when ms_start was unset but ms_end was set, the delta leaked a large epoch-relative value (~1.7 trillion ms) instead of returning -1. | 6 个月前 | |
Rename: PreTransactionLogData -> NonHttpSmLogData (#13154) The alternate-HttpSM access log entries have more opportunities for use than just pre-HttpSM state machine uses. There may be uses for it, for instance, to log TLS handshake issues, for instance. Thus the old pre-transaction terminology was too narrow. This renames the exceptional carrier to NonHttpSmLogData, documents that normal transaction logs should still use HttpSM-backed data, and updates the protocol logging path and tests to use the new terminology. | 3 个月前 | |
Remove unused member variables across multiple subsystems (#13005) Remove unused member variables and dead code identified by static analysis across core, cache, net, proxy, and plugin subsystems. * Event.h: drop dead #ifdef ONLY_USED_FOR_FIB_AND_BIN_HEAP block. * HttpSM: remove unused m_last_state, prev_hook_start_time, cur_hooks. * CacheVC: reorder fields; rename unused open_read_timeout flag. * AIO / ink_aiocb: remove unused aio_state, aio__pad[1], and index. These were cargo-culted from POSIX struct aiocb; ink_aiocb is internal to ATS and never crosses an ABI boundary. * LogBuffer: remove unused m_in_network_order and simplify iterator. * Http1{Client,Server}Transaction: remove unused outbound_transparent. * ConnectingEntry: remove unused NetVCOptions opt field. * ParentConsistentHash: remove unused foundParents member. * SSLNetVConnection: remove unused protocol_mask_set and protocol_mask (unrelated to the TLSValidProtocols mask used by SNI config). | 4 个月前 | |
Fix last left unused parameters in the project (#11471) * Fix last left unused parameters in the project Remove the warning supporession for unused parameters * Fix forgotten unused parameter in bw_log function * Fix unused parameters in the cripts module * Fix unused parameters reported only by Clang compiler in template code * Fix unused parameters in the lua plugin * Return back temporary the -Wno-unused-parameter warning suppression * Restore back `alloc` parameter name in swoc/Vectray functionality | 2 年前 | |
ParentSelection: increase size of mapWrapped array for compat with strategies | 1 个月前 | |
`plugin.config` to `plugin.yaml` migration. (#13070) * Add plugin.yaml as YAML alternative to plugin.config Introduce plugin.yaml, a YAML-based configuration file for global plugins that replaces the legacy line-based plugin.config format. New capabilities over plugin.config: - enabled: false to disable plugins without removing them - load_order for explicit plugin loading priority - NOTE-level startup log per plugin with load status - traffic_ctl plugin list via JSONRPC for runtime introspection - traffic_ctl config convert plugin_config for automated migration - Fallback: plugin.yaml takes precedence; plugin.config used if absent * Add inline config field to plugin.yaml Add the 'config' field to plugin.yaml entries, allowing plugin configuration to be embedded directly using a YAML block scalar (|). The literal text is written to a temporary file at startup and passed to the plugin as an argument. Only scalar values are accepted; structured YAML is rejected to preserve quoting semantics that plugins like txn_box rely on. | 4 个月前 | |
OCSP: FetchSM initialization check (#12185) Delay OCSP fetch until FetchSM is initialized. This avoids noisy OCSP error messages on ATS initialization that result when the FetchSM calls fail each attempted OCSP cert fetch. Fixes: #9819 | 1 年前 | |
Add per-plugin workload counters (#13278) Add per-plugin metrics that allow us to track how much work each plugin is doing by counting their invocations, intercept bytes, and intercept transfers. Add proxy.process.plugin.<name>.{invocations,bytes, transfers}, keyed by the plugin DSO basename and bounded by the number of loaded plugins. Global plugins load via raw dlopen and previously carried no identity, so they are given a PluginThreadContext around TSPluginInit; the continuations they create then carry plugin identity the same way remap plugins already do. | 2 个月前 | |
Add per-plugin workload counters (#13278) Add per-plugin metrics that allow us to track how much work each plugin is doing by counting their invocations, intercept bytes, and intercept transfers. Add proxy.process.plugin.<name>.{invocations,bytes, transfers}, keyed by the plugin DSO basename and bounded by the number of loaded plugins. Global plugins load via raw dlopen and previously carried no identity, so they are given a PluginThreadContext around TSPluginInit; the continuations they create then carry plugin identity the same way remap plugins already do. | 2 个月前 | |
Cleanup: Use enum class (#12249) This pull request converts non-class enums to enum classes. There are still many non-class enums not addressed in this pull request. However, since the changes have grown quite large, I'm submitting it at this point. | 1 年前 | |
Cleanup: Use enum class (#12249) This pull request converts non-class enums to enum classes. There are still many non-class enums not addressed in this pull request. However, since the changes have grown quite large, I'm submitting it at this point. | 1 年前 | |
Share HTTP accept properties (#13514) Each HTTP protocol acceptor keeps a separate copy of proxy-port properties, so adding or consuming one requires protocol-specific plumbing and can leave newer protocols without configured defaults. This patch introduces a common HTTP acceptor base that shares one immutable property set per proxy port and retains the source HttpProxyPort. Sessions track that acceptor, while transactions copy mutable outbound settings at transaction start so overrides stay isolated. Handoff paths keep their acceptors alive for the resulting session. Fixes: #3427 | 8 天前 | |
Drop H2 origin trailers for H1 clients HTTP/2 origin trailers could be decoded from an origin response and then forwarded to an HTTP/1 client after the terminal chunk marker. That left extra header-like bytes on the client connection after ATS had finished the chunked response. This gates trailer tunneling on downstream trailer support and drops origin trailers when the user-agent transaction cannot send them. This also adds a replay-based AuTest that reproduces the HTTP/2 origin to HTTP/1 client path. | 1 个月前 | |
Fix race in remap table refcount during reload Co-authored-by: Masaori Koshiba <masaori@apache.org> | 1 个月前 | |
clang-format v18 + modified configs (#11285) | 2 年前 | |
TransformTerminus::do_io_*: handle null buffer (#11859) This is a very similar change as #11789. With this patch, TransformTerminus properly supports a 0 byte read to cancel VIO. Without this patch, the logic naively scheduled an event which called the handler which would crash on what was often a canceled continuation or otherwise invalid continuation. | 1 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 8 天前 | ||
| 16 天前 | ||
| 1 年前 | ||
| 5 个月前 | ||
| 1 个月前 | ||
| 3 个月前 | ||
| 5 个月前 | ||
| 1 个月前 | ||
| 5 个月前 | ||
| 6 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 2 年前 | ||
| 1 个月前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 1 年前 |