aboutsummaryrefslogtreecommitdiffhomepage
path: root/pingora-core
AgeCommit message (Collapse)Author
5 daysfix deadloop if proxy_handle_upstream exit early than proxy_handle_downstreamtaikulawo
Includes-commit: 87a0483e19cd79907f6a9851eecaac5d0a1bf4b1 Includes-commit: 1978a261816afbe5bf1cf56977dbc67e2d6cba1a Includes-commit: f9730f6c71dc8a3ecf57e8e1a512462bbb6b7ea4 Includes-commit: 141996d93c6b088edc81a70bf062ed41154c8c74 Includes-commit: b8415685cb192e0d11f4cfb751e01eb26b8a5e5f Includes-commit: 67283ad69f6ea04e219ac827bb9cf7cc4808da06 Includes-commit: d644ecc4186ccbf65442defff4fa34c2307d6a0a Replicated-from: https://github.com/cloudflare/pingora/pull/480 Co-authored-by: Viacheslav Biriukov <[email protected]>
12 daysImprove support for sending custom response headers and bodies for error ↵Andrew Hauck
messages
2024-11-22update `impl<T> UniqueID` to use correct return typeGeorg Lauterbach
Includes-commit: d26d344e15bd411dd298b32ecc3e60ac233b0866 Replicated-from: https://github.com/cloudflare/pingora/pull/471 Co-authored-by: Matthew Gumport <[email protected]>
2024-11-22Prune unused deps and run cargo-machete in ciIvan Babrou
Includes-commit: 7cee7a7e368a6e445903af1d59d92c680948ed2b Replicated-from: https://github.com/cloudflare/pingora/pull/454
2024-11-22Check content-length on end of stream h2 headerEdward Wang
The h2 crate does not appear to check for content-length underflow if only a header frame is received with END_STREAM.
2024-11-08add builder api for pingora listeners:Noah Kennedy
This change takes the existing API for ListenerEndpoint and modifies it to use a typical idiomatic builder style. There are additional improvements which I feel can be made here, but I believe that it would be better to do them in subsequent commits in order to keep changes as incremental as possible. In particular, I think that making socket options into sub-builder is probably a good move.
2024-11-08Remove unused `matches=0.1` dependency crateXiaobo Liu
The rust 2021 use rust version is 1.56.0, `matches` included in the standard library prelude and thus is automatically in scope. Includes-commit: ebc6cbfd1039273c2b9620bd4c70a395afccfc3a Replicated-from: https://github.com/cloudflare/pingora/pull/414 Signed-off-by: Xiaobo Liu <[email protected]>
2024-11-08Check h2 stream end for errorEdward Wang
Certain APIs consuming HTTPTasks want to know if the response has finished. However, in cases such as protocol errors the h2 RecvStream will return `is_end_stream` which may be associated with an HTTPTask that was not actually the end of stream. This affects systems such as caching which wants to know when the response has properly finished for finishing a cache miss. This change attempts to check if the stream has ended due to an h2 error or not to forward a successful or Failed HTTPTask as appropriate.
2024-11-01Release 0.4.00.4.0Yuchen Wu
2024-11-01Use OkOrErr on connect() + accept() when stream doesn't existAndrew Hauck
2024-10-28Fix clippy lint for leaking private type in rustlsKevin Guthrie
2024-10-28Change `new_with_opt_and_conf` to accept `impl Into<Option<Opt>>` instead of ↵Kevin Guthrie
explicit option
2024-10-28Make opt optional for frontendsMatt Fleming
Allow frontends to avoid jumping through hoops to create an Opt object, for example, when configuration is handled by a config file. Includes-commit: 8204820b217b6d60906b8361d2e077ed743b970b Replicated-from: https://github.com/cloudflare/pingora/pull/390
2024-10-28Plumb errors through rustls implementationKevin Guthrie
2024-10-28Add preliminary rustls supportKevin Guthrie
Co-authored-by: Harald Gutmann <[email protected]>
2024-10-28pingora-core: Update socket dependencySargun Dhillon
We have the socket version at 0, which matches 0.3 as well. That wont work because it doesn't have feature "all". We need 0.4+. >=0.4, <1, should match ^0, but exclude 0.3. Includes-commit: 98debd9f2793a77047caebf2e70684eb7ef4df14 Replicated-from: https://github.com/cloudflare/pingora/pull/413
2024-10-28shutdown h2 connection gracefully with GOAWAYsJordan Wu
Co-authored-by: Matthew Gumport <[email protected]> Includes-commit: 15e5c64ce46da5e061f2c84ce45cdddedf2f6058 Replicated-from: https://github.com/cloudflare/pingora/pull/415
2024-10-18windows: fixes for building pingora-coreFredrik Enestad
Includes-commit: 5b5f2aeecf459f633b5459fffba4ad66da495a0a Replicated-from: https://github.com/cloudflare/pingora/pull/429
2024-10-18Add into_inner() for HTTP client and serverSargun Dhillon
This adds the into_inner() function to the stream type, allowing the HTTP/1.1 client and server to be turned back into a stream. These functions are useful for implementing HTTP CONNECT or HTTP Upgrade. Includes-commit: 95aa77098cdfc7667074f2793cd326f496da66a1 Replicated-from: https://github.com/cloudflare/pingora/pull/412
2024-10-18Check the current advertised h2 max streamsYuchen Wu
This change fixes an issue that the actual current max send streams is ignored. This change requires h2 >= 0.4.6
2024-10-12NOJIRA Update documentation to reflect changes in featuresKevin Guthrie
2024-10-12Refactor openssl code one more time before rustls integrationYuchen Wu
Co-authored-by: Harald Gutmann <[email protected]>
2024-10-11Detect h2 preface for h2c requests.Yuchen Wu
This allows h2c and http1 to co-exist on the same port.
2024-10-11Add windows compatibility for get_original_dest()Andrew Hauck
2024-10-11Add Methods to SocketDigest for Retrieving SO_ORIGINAL_DST Informationermakov-oleg
--- Merge branch 'cloudflare:main' into original-dst Co-authored-by: ermakov-oleg <[email protected]> Includes-commit: a3f2affceb1fcc41742c72088f993e05600abd2f Includes-commit: a73893b243b68108033ecda26b0d36939ad36891 Replicated-from: https://github.com/cloudflare/pingora/pull/387
2024-10-11Fix all the warnings for non-linux unixAndrew Hauck
2024-10-11feat(core): make 'sentry' optionalYuchen Wu
Co-authored-by: Grvzard <[email protected]>
2024-10-11Windows supportYuchen Wu
Co-authored-by: Fredrik Enestad <[email protected]>
2024-10-07Make sentry an optional featureKevin Guthrie
2024-10-07Stream able to configure rx timestamp readingDaniel Dao
This allows us to optionally enable rx timestamp reading logic per stream by calling `set_rx_timestamp`. When rx timestamp is disabled, the standard battle-tested logic is used.
2024-10-07support retrieving rx timestamp for TcpStreamDaniel Dao
Documentation: https://docs.kernel.org/networking/timestamping.html This modifies Stream type to be able to setup rx timestamp on its socket, and use `recvmsg` to read the returned timestamp. The rx timestamp of the last recvmsg is stored as `rx_ts` In the context of tcp stream, if the returned byte range spans multiple timestamps, the last one is returned.
2024-10-07Safe guard for empty alpn.Yuchen Wu
Per ~~~-5535: it is not safe to call SSL_select_next_proto() with invalid alpn_in. Although our code is safe because it is only used via set_alpn_select_callback which performs the check, an additional guard is added just in case these functions are used in other context.
2024-09-23Add support for gRPC-web module to bridge gRPC-web client requests to gRPC ↵Andrew Hauck
server requests
2024-09-13Windows support 2/n: Support FD types on different platformsYuchen Wu
2024-09-06Fix `Opt::parse_args` doc typoAllan
Includes-commit: 9a934bc8baa4e8b05639f6aa71ca9695832986f0 Replicated-from: https://github.com/cloudflare/pingora/pull/360
2024-09-06docs: fix doc comment for request_summaryYuchen Wu
Co-authored-by: Derek Argueta <[email protected]>
2024-09-06Replace non-breaking space with regular spaceZero King
Includes-commit: 0560e0ff05481465e926766ba1d6791c12a96944 Replicated-from: https://github.com/cloudflare/pingora/pull/356
2024-09-06Add support for binding to local port ranges and retrying on EADDRNOTAVAILAndrew Hauck
2024-08-30Add error log when attempting to upgradeJames Munns
I was attempting to test upgrades on MacOS, and was a bit confused at the ECONNREFUSED error. Having this log would help others avoiding troubleshooting this until it is supported. Includes-commit: 6f80ce2f7a5dd97e174916d8efc4864366eca790 Replicated-from: https://github.com/cloudflare/pingora/pull/327
2024-08-30Windows support 1/n: clean up cargo and certain testsYuchen Wu
Co-authored-by: Fredrik Enestad <[email protected]>
2024-08-30Refactor `boringssl_openssl` into submodules in preparation for rustls ↵Kevin Guthrie
integration
2024-08-30Weaken or remove etags when downstream compression appliesEdward Wang
Allow this as an adjustable setting to preserve etag when (de)compressing. The default is to weaken etags whenever a compression module applies.
2024-08-30Refactor module into and relocate the no-op tls moduleKevin Guthrie
2024-08-23Add a dummy TLS implementation to be used as fallbackWladimir Palant
--- Added some more exports used by the server example Includes-commit: d7be54bbb5c0c3465eef09d0545988b34b725f4f Includes-commit: e36e6e719450bc445c383d501aacc02bff6695e5 Replicated-from: https://github.com/cloudflare/pingora/pull/277
2024-08-23Add more tests for setting vary response headerAndrew Hauck
2024-08-23Fixes #229, #233 – Set proper response headers when compression is enabledWladimir Palant
--- Merge branch 'main' into compression-headers --- Updated “compression enabled” check for recent changes --- Fixed clippy warning --- Reverted changes related to Accept-Ranges header --- Handle multiple Vary headers --- Merged main branch Includes-commit: 4ea0c3ff10fad0a27f798dcdf3f797294af89d80 Includes-commit: 78f09b29d7a6f04b2647879855e91a3cf3744fb1 Includes-commit: 973d5969e4210b1a86e69e75d74caabb44109a8a Includes-commit: 9f82578858e5ba167badc81cf347fb70bbf7f41a Includes-commit: d6e94c93f1cdd9ca3ab8e3829d65af6f265ce627 Includes-commit: e88fdb8a3721bb38c476b0d825d271b013069df7 Includes-commit: f647f04bf1db2b63788a837a5ab5a6f3030d209e Replicated-from: https://github.com/cloudflare/pingora/pull/286
2024-08-23Make l4 module pub to expose ConnectAndrew Hauck
2024-08-16fixup sentry unwrapMatthew Gumport
Don't unconditionally unwrap Sentry, guard it with a default value.
2024-08-16add support for passing sentry releaseMatthew Gumport
This changes the Sentry field from the DSN string to the entire ClientOptions struct. This will let us pass more information to the client SDK, including the git-parsed version information.
2024-08-16fix h2 request_summaryCongyu WANG
--- also add port number --- also print query with path for h2 just as h1 Includes-commit: 2df4e29e180f5e79bee04aa4b4d83536e9f7f3a4 Includes-commit: 53e1810a27de581f6d5a9606198d9ac443f4a63c Includes-commit: 8102a0900bf30bf740e58c3a541bb86d296eb660 Replicated-from: https://github.com/cloudflare/pingora/pull/345