| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 个月前 | |
http2: Reject CONTINUATION accumulation that overflows header_blocks_length Http2ConnectionState::rcv_continuation_frame() accumulates each CONTINUATION frame's payload length into Http2Stream::header_blocks_length, a uint32_t, without checking that the running total stays in range. Add http2_continuation_length_would_overflow() and consult it before updating header_blocks_length. If appending the next payload would take the accumulator past UINT32_MAX, reject the connection with ENHANCE_YOUR_CALM rather than letting the counter wrap. This matches the connection-level handling of the adjacent header-blocks-too-large limit. | 1 个月前 | |
Require and call destructors on ClassAllocated objects (#12676) * Update ClassAllocator to require and call destructors on ClassAllocated objects * Cleanup and add HttpSM destructor * The two classes that are now destructed that were previously cleaned up manually are cripts::Context and HttpSM | 8 个月前 | |
Use malloc allocated buffers for h2 headers if enabled (#12767) | 7 个月前 | |
Remove remaining use of obsolete debug output functions. (#11464) | 1 年前 | |
Bound outstanding HTTP/2 SETTINGS Dynamic HTTP/2 stream windows can emit a SETTINGS frame as streams open, and each unacknowledged frame keeps a local settings snapshot. A peer that keeps opening streams while withholding SETTINGS ACKs can grow that per-connection queue without bound. This caps outstanding SETTINGS snapshots based on the configured concurrent stream limit, skips non-preface no-op SETTINGS frames, and closes the connection with SETTINGS_TIMEOUT when the cap is exceeded. This also adds an h2 AuTest that withholds ACKs while continuing to read the connection. | 1 个月前 | |
Move mgmt, iocore, proxy to src/ and include/ (#10638) This replaces PR #10558 Some highlights: * The P_ files are left in src/ * The I_ prefixes in public header files are removed Note: the include path cleanup would be left for another PR. | 2 年前 | |
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 年前 | |
clang-format v18 + modified configs (#11285) | 2 年前 | |
Require and call destructors on ClassAllocated objects (#12676) * Update ClassAllocator to require and call destructors on ClassAllocated objects * Cleanup and add HttpSM destructor * The two classes that are now destructed that were previously cleaned up manually are cripts::Context and HttpSM | 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 | 9 天前 | |
Fix H2 origin payload handling (#13363) HTTP/2 origin responses can legally carry a non-zero Content-Length when no payload is sent, such as responses to HEAD requests. ATS discarded the outbound request method after encoding the H2 HEADERS frame and could therefore reject a valid no-body response as a payload-length error. An H2 DATA sender also treated every byte visible through its IOBufferReader as eligible for the current write. Reader availability is independent of the finite VIO operation: VIO::ntodo() is the authoritative boundary, and the ordinary network VConnection already caps writes to it. Without that cap, the regression sent 327,675 bytes for a 300,000-byte PUT and the H2 origin returned GOAWAY with PROTOCOL_ERROR. This retains the outbound request method on the H2 stream for response validation. It also caps DATA payloads to the remaining write VIO bytes, still setting END_STREAM when the final authorized bytes are sent, and extends the H2 origin replay coverage with HEAD and large PUT cases. | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 8 个月前 | ||
| 7 个月前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 2 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 8 个月前 | ||
| 9 天前 | ||
| 1 个月前 |