ulfius: client_address carries the whole peer sockaddr; forgectrl.auth asserts the loopback report is accepted

The dual-stack listener reports every peer as a sockaddr_in6; ulfius
2.7.15 copied sixteen bytes of it, so forgectrl's loopback-only cooling
channel refused the controller's every report (403 loopback only) and
the engine never saw a run or an armed window. The recipe carries the
patch: a sockaddr_storage allocation and a copy of the family's length,
in the dispatcher and in ulfius_copy_request.

forgetest: forgectrl.auth asserts POST /cool/state from loopback -> 200
beside the LAN 403, and covers src/peer.*. BRINGUP item 21 and the
campaign log record how the campaign on dev 20260824215906 found it.
This commit is contained in:
ScottW514
2026-08-24 19:02:52 -04:00
parent 4d3d173445
commit 243320f65d
5 changed files with 147 additions and 5 deletions
@@ -12,6 +12,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=40d2542b8c43a3ec2b7f5da31a697b88"
SRC_URI = "git://github.com/babelouest/ulfius;protocol=https;branch=master"
SRCREV = "a0603447d3ed63c0880db396b9c395fb4bf6b559"
# The request's client_address is the whole peer sockaddr. Upstream copies
# sizeof(struct sockaddr), 16 bytes, which truncates the sockaddr_in6 a
# dual-stack listener reports for every peer; forgectrl's loopback-only
# report channel reads the mapped address bytes that lie beyond it.
SRC_URI += "file://0001-client_address-carries-the-whole-peer-sockaddr.patch"
S = "${WORKDIR}/git"
inherit cmake pkgconfig