Fluxheim 1.6.30 #105
eldryoth
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Fluxheim 1.6.30 Release Notes
Fluxheim 1.6.30 continues the Pingora-exit work by moving plaintext upstream
HTTP/2 forwarding into the native HTTP/1 proxy path.
Highlights
proxy.upstream_http_version = "http2"with plaintext upstreams that speakh2c/prior-knowledge HTTP/2.
single request. The pool keeps the h2 connection driver alive, reserves stream
capacity with
proxy.upstream_h2_max_streams, invalidates stale handles afterh2 errors, and retries safe methods once after a pre-response pooled-handle
failure.
proxy.read_timeout_secs,proxy.send_timeout_secs,proxy.upstream_h2_max_streams, andproxy.upstream_h2_ping_interval_secs.proxy.upstream_http_version = "http2"with the existing upstream TLS/SNI/CApolicy. TLS
http1-and-http2fallback now advertisesh2andhttp/1.1and dispatches each request with the protocol selected by ALPN.
proxy.upstream_http_version = "http1-and-http2"can now attemptHTTP/1.1 h2c Upgrade only when the new
proxy.upstream_h2c_upgrade = trueopt-in is set. The default remains
false; refused upgrades fall back to afresh HTTP/1.1 connection.
to an in-process HTTP/2 origin, and that two downstream requests reuse one
upstream H2 connection.
origin closes a pooled H2 connection and round-robin across multiple static
H2 upstreams.
preserves the configured slot order while forwarding every selected upstream
request over HTTP/2.
HTTP/2 upstreams and that unsafe methods are not replayed to another H2
upstream after a failed first attempt.
a real in-process HTTP/2 origin, and that origins refusing Upgrade fall back
to HTTP/1.1 without replaying the downstream request during the probe.
Security Notes
timeout so an origin that accepts TCP and then stalls the HTTP/2 preface cannot
freeze upstream setup indefinitely.
later downstream requests cannot wait indefinitely when all upstream H2 stream
capacity is occupied by slow responses.
policy: decoded header-count/list limits, URI/body limits, response body
timeout, request upload lifetime, response header validation, and prohibited
hop-by-hop response-header rejection.
one-shot H2 requests before acquiring stream capacity or opening an upstream
connection.
silently reverting to the default policy.
connect and H2 handshake work, avoiding serialized cold-start failures when an
origin is unavailable.
cold pool or post-invalidation retry cannot open one TCP/H2 connection per
waiting stream slot.
proxy.read_timeout_secsnow also bounds native H2 request readiness andresponse-header waits, not only response-body reads.
proxy.upstream_total_connection_timeout_secsnow caps native H2 setup plusthe first stream-readiness/response-header phase on a newly initialized H2
connection.
h2 error reports a GOAWAY/connection-level condition.
wait for PONGs with the selected H2 handler timeout, and abort the connection
driver when the peer stops acknowledging pings.
through a real h2 server IO wrapper, proving configured keepalive is emitted
instead of only accepted by config.
h2withALPN, forwards downstream HTTP/1.1 requests to a TLS HTTP/2 origin, and sends
an HTTPS-scheme upstream H2 request.
http1-and-http2fallback selectsHTTP/2 when the origin negotiates
h2and falls back to HTTP/1.1 when noHTTP/2 ALPN protocol is selected.
http1-and-http2upstream fallbackis native-ready when a TLS backend is compiled, while plaintext
http1-and-http2remains HTTP/1.1-only unlessproxy.upstream_h2c_upgradeis explicitly enabled.
response conversion, keeping the lifetime visible to reviewers and avoiding
accidental future movement of the permit guard.
inside the H2 sender, avoiding duplicate prevalidation paths with drift-prone
policy inputs.
stream cap as TOML validation, with a debug assertion on pool construction.
ignored, and H1/H2 upstream request writers now share the same predicate for
Fluxheim-owned header stripping.
mixed-mode configurations. Plaintext
http1-and-http2does not use H2 unlessthe explicit h2c Upgrade opt-in is enabled.
proxy-owned headers such as
transfer-encoding,upgrade,keep-alive,proxy-connection,te, andtrailer, in addition tocontent-length,connection, anddate.before rebuilding a failed pooled H2 connection, then reacquires capacity
immediately before sending the retry stream.
http1-and-http2only throughthe explicit h2c Upgrade opt-in; without it, mixed-mode plaintext fallback
stays on HTTP/1.1.
proxy.upstream_h2c_upgradeis rejected unless an upstream is configured,the upstream is plaintext, and
proxy.upstream_http_version = "http1-and-http2", keeping h2c Upgrade out of TLS and prior-knowledge H2configurations.
an upgrade refusal and retries the original downstream request on a fresh
HTTP/1.1 connection, while still treating probe timeouts as ambiguous and
non-replayable.
broken pipe, so explicit h2c mixed-mode fallback cannot downgrade and replay
a request after an upstream H2 stream has already been opened.
HTTP2-Settingsheader now uses the infallible fixed-input encoderadded by
base64-ng1.2.2, removing the previous local dead error branchwhile keeping Fluxheim on the hardened base64-ng dependency.
bytes while reading one byte at a time, preserving post-upgrade H2 frames
without an O(n²) scan.
Compatibility Notes
TLS
http1-and-http2fallback negotiation on the native path. Plaintexthttp1-and-http2uses HTTP/1.1 by default; setproxy.upstream_h2c_upgrade = trueonly for origins known to implementHTTP/1.1 h2c Upgrade. This is intentionally not default because cleartext
origins have no ALPN negotiation point and h2c Upgrade support varies by
server.
Checksums And Signatures
4d980e5c43ca8367f1fe565b6fa4143851690f8253af386c0d69b4e4a042e798941b5ff909d43e7e2a53425fb17a44637b716182 fluxheim-1.6.30.tar.gz6c086aaf82a2418ab85c78ec0da77bbabd5772e76230ae012c3338df5381c810 fluxheim-1.6.30.zip177db59096d82545c62707a27c3b1dc67cb64de04c61782ca301a8ef4d7d1cf0 fluxheim-1.6.30-full-x86_64-linux.tar.gzbce9ebc9861a46257a676c8ef1affff07db60ee50bbddc0be61759c41a177ab4 fluxheim-1.6.30-cache-x86_64-linux.tar.gzd1d158b9f09363b3f7b40d5ef4af7b76323084bc0c3b95b2951ddcb8ec2514b1 fluxheim-1.6.30-proxy-x86_64-linux.tar.gzddfe961305d7ae080348889b77c47e6581506dc9b36025aa051c5eca5640e382 fluxheim-1.6.30-php-x86_64-linux.tar.gzf4fd78ee7ed05976caf7d6a2b5d454076a4b09900795a598edcc3aade308b6c8 fluxheim-1.6.30-load-balancer-x86_64-linux.tar.gz6f3fdd89a56891c1f163a131d634e9aaade6dc26965de54b05183545ab184a91 fluxheim-1.6.30-config-tester-x86_64-linux.tar.gz7e26f2adb2acbff62b3472743fc8fd18da747d1a00c8522ee2ba12738d0df44b fluxheim-1.6.30-full-aarch64-linux.tar.gz21778a66eec1ac9dab53b74f31c93a9eed02b61b912c6b6d02e2fd62d8b59654 fluxheim-1.6.30-cache-aarch64-linux.tar.gz08cd3188228c01993219c3c42c1fa681b43139d83e3c3d68de3ab1e7085ab6fb fluxheim-1.6.30-proxy-aarch64-linux.tar.gz1a54a3603baf4d33046363d7da4089fde8875a58a0a1adeba248bdf9c6b43c31 fluxheim-1.6.30-php-aarch64-linux.tar.gz01f89c5caebf5b9d1ac81d62b92ccf94453ac15005c4e3167cb46ce72499e4db fluxheim-1.6.30-load-balancer-aarch64-linux.tar.gza14a357f91b4263d6329163136cf6b3ad6b9bc3fbb9664e7e46092c98b3eb560 fluxheim-1.6.30-config-tester-aarch64-linux.tar.gz043e5cdd45e137a137f9ab1cc8e259c950e9687741b660c6db805c0e3f5e0f6a fluxheim-1.6.30-dev-aarch64-macos.tar.gz1229f11218a6536c2856a562feaee2e4ec174a37799f04801bb9974013c02175 fluxheim.spdx.json02f037ddb23123964809e3bab85b2402def7c3756369d607b188f060f5e53f1f fluxheim.cyclonedx.json1cf47ba69a785a618a2097026c73305813cad68f2e0bf45fce903990453fd40bx86_649108bfa48d0ba68635512de6bbef28d766ec15c62a1162e4078d6e41fa21e2cfaarch6444e8ef1fe73fd22ddec3118c895be3e1ee870564189262ed5ef22d1eb511b00amacosghcr.io/valkyoth/fluxheim@sha256:12ce09ad2e04fa09651c331402bbd54729b0f4a8dcf06e55ec312a143fbae8d9ghcr.io/valkyoth/fluxheim@sha256:0ae73c1cbc93501ffb7e9bc48aa5e5323fc74d41196e70e0240c570089b2f248ghcr.io/valkyoth/fluxheim@sha256:f3bba93cce77cecaf3337c658b3d50195d81b5531465a12f7db2633b27989c85ghcr.io/valkyoth/fluxheim@sha256:a4c1616d24b0e3a1f3f9dbe2dc96f27fa0098c38ee6de2595c90028f57631561ghcr.io/valkyoth/fluxheim@sha256:4cb0a051bb9b090f7b2cbc7fbe71ed45466f84c16df4b807792e2d6c8c828c43ghcr.io/valkyoth/fluxheim@sha256:4d05a44f4ecba24796d2640a98aa29ee68682e6d50352efde1ccba3393c9d54bghcr.io/valkyoth/fluxheim@sha256:08eb743a3deba42eee5c85ae5e8ea5c8c7b1ba2f09aedff0a2ae9f45c2cf0984ghcr.io/valkyoth/fluxheim@sha256:7ae2fc69dd6fc06737d92d61767e3570aa1b90be98c3c39f683a575d078654afghcr.io/valkyoth/fluxheim@sha256:e48b1bac06fec79305f64cf31bee574317ba6a9425a64ad346559b4b9747230dghcr.io/valkyoth/fluxheim@sha256:283765a6d9040f3e137733e67f22ceb473312e28f39690a1e132de7754252b6eghcr.io/valkyoth/fluxheim@sha256:d66413f3cfc8a458548aad05630d8c107f5e245a53b8a0094706a931b7e8e3e9ghcr.io/valkyoth/fluxheim@sha256:e31880c640fd8975213d7a6c3150218fc037ed51d20724d878a614c917f66f56ghcr.io/valkyoth/fluxheim@sha256:791575afaa1212fd79e6a39ca42fbfe84b1b4ada54e51eaabe06f8aa8e9793ddghcr.io/valkyoth/fluxheim@sha256:254c5304c8f68d132f8b10bb459d14e3d4e57ab056b40c9f766130729380edd6ghcr.io/valkyoth/fluxheim@sha256:10251c1e8fef43e709f5ca4794ef289fe1185551c261438ce3690d337efb62aaghcr.io/valkyoth/fluxheim@sha256:15f0c6440cf01cbc594fc29dd4804c5b2eecbfd8b102323f20fbcf5a8f2d91fcghcr.io/valkyoth/fluxheim@sha256:9c12823b46c102155d45daccab4ac8eafbc1426c3a4e86523368cd73327eee6eghcr.io/valkyoth/fluxheim@sha256:ceeec7a6b0e1d55f6d911651048a701033a94e2f8bf2fe6db50181fcdfebca5eghcr.io/valkyoth/fluxheim@sha256:3146e248b5fed0b1992600ee10723e8f3538f5d25ce05c72dad75609e68f3fdfghcr.io/valkyoth/fluxheim@sha256:313baf621cf4923be9cbcf561a5775b7dc1ba35e0cbb8e3211b1f6ad3797e75aGood "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4This discussion was created from the release Fluxheim 1.6.30.
Beta Was this translation helpful? Give feedback.
All reactions