Repository navigation
Release 0.7.0 - #65
Merged
Merged
Conversation
Signed-off-by: Thomas Darimont <thomas.darimont@googlemail.com>
Signed-off-by: Thomas Darimont <thomas.darimont@googlemail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 0.7.0, then 0.8.0-SNAPSHOT.
Merge with a merge commit or a rebase, not a squash: the commit "Release 0.7.0" has to reach
mainunchanged,etc/release.sh releasetags it there.Release notes, from CHANGELOG.md:
A release of hardening. A host name like
127.attacker.exampleno longer passes forloopback, the poll endpoint is held to the same URI policy as the metadata endpoints
before the access token goes to it, and responses from the transmitter are bounded,
4 MiB by default. Every stream configuration the transmitter returns has its issuer
checked, not only a created one. Stopping and starting a poller or a registrar again
no longer leaves a thread or a stream behind, and the pending-acks gauge no longer
turns
NaN. The Quarkus extension mirrors the newSsfPoller.setUriPolicyand themaximum response size when it adopts this release.
Security
127., such as127.attacker.example, counted as a loopbackaddress and was allowed to use plain
httpunder the default URI policy.SsfTransmitterUriPolicynow takes only
localhostand names under it, IPv4 addresses in127.0.0.0/8and::1(also asthe IPv4-mapped
::ffff:127.0.0.1) for loopback, the same rule as the Go library.access token is sent to it, whether it was configured (
easyssf.receiver.poll.endpoint-url, checkedat startup) or taken from the stream configuration the transmitter returned:
https, orhttponloopback addresses only, unless
allow-insecure-httpis set. New API:SsfPoller.setUriPolicy,which the Quarkus extension can wire to its insecure-http setting.
poll responses) are bounded, 4 MiB by default; a larger response fails the call as if the
transmitter were unavailable instead of being buffered. New API:
JdkSsfHttpClient.setMaxResponseSizeand
SsfHttpResponse.readBodyfor otherSsfHttpClientimplementations, and the propertyeasyssf.receiver.http.max-response-sizeof the Spring Boot starter, which the Quarkus extensioncan mirror.
Changed
SsfStreamClientchecks the issuer of every stream configuration the transmitter returns, not onlyof a created one:
getStream,getStreams,updateStreamandreplaceStreamthrowSsfStreamIssuerMismatchExceptionascreateStreamdid, as the SETs of a stream with anotherissuer would not verify.
SsfStreamRegistrardeletes a stream it created with the wrong issuer, asbefore, and leaves an existing one alone; it fails without retrying either way.
Fixed
jti(RFC 8936, section 2.4) is reportedto the transmitter as
invalid_requestunder that key instead of being handled and acknowledgedunder a key that is not its own.
SsfPoller.stop()followed bystart()while a handler was still running left the old pollingthread alive next to the new one once the handler returned; a polling thread now ends as soon as it
is no longer the poller's thread.
stop()logs when the thread is still busy after five seconds.SsfStreamRegistrar.start()is idempotent andstop()waits for the registration thread to endbefore deleting the stream. A registration that completes after
stop()publishes nothing anddeletes a stream it created on the way if the registrar deletes on shutdown; if the registrar was
started again meanwhile, it leaves that stream to the new registration, which adopts it if it finds
it and deletes it once it publishes another one; a stream whose deletion is under way is not adopted.
stop()deletes only a stream published since the laststop(), not again the one thatstop()deleted before.
easyssf.receiver.poll.pending-acksgauge no longer turnsNaNafter a garbage collection.Micrometer refers to what a gauge reads weakly, and the poller handed it a method reference
nothing else held on to; the poller now keeps that reference for as long as it lives, so the
gauge does too. The JDK 27 job of the CI collected it first.
pinned by digest. MongoDB 8.0 and newer exit at startup on a Linux kernel from 6.19 up to 7.0.13,
and before 9.0.4 they took Ubuntu's 7.0 kernels for 7.0.0 (SERVER-121912, SERVER-131779), so the
suite found no database and the nightly run failed since the runner image of 2026-10-18.