bneradt commented on PR #13838: URL: https://github.com/apache/trafficserver/pull/13838#issuecomment-6608706822
Thanks @maskit and @bryancall. Rebased on master and pushed as 413223e5e5: **Session copy off the export registry (maskit):** the copy now lives in a session slot reserved under the fixed name `jax_fingerprint.log_field` with its own description (`jax_fingerprint private --log-field fingerprint copies`), independent of `--export`. It is a private `SessionFingerprints` type, not a `RegistryV1`/`ContextMap`, so nothing looking up the registry by name or ABI finds it. All instances share the one slot, keyed by method name. **Copy cost (maskit, and Bryan's `_addr[PATH_MAX + 1]` nit):** each entry holds only the fingerprint string and an `std::optional<uint64_t>` transaction id, so there is no `JAxContext` allocation or `PATH_MAX` copy at TXN_CLOSE. A later transaction reassigns the existing string, which reuses its buffer. This replaces the `ContextMap::release()` idea. **`txn_id` of 0 (Bryan):** `JAxContext` is back to its master form; the transaction id is an `std::optional` on the session entry, and connection fingerprints use `std::nullopt`. **Tests (Bryan):** - The partial-request line now has to end in ` ja4h=-`. - A new keep-alive case completes one request and then stalls in a second on the same TLS session; the stalled one must log `ja4h=-`. Making the session lookup ignore the transaction id fails it at that line, logging the first request's JA4H. - The comments on the handshake-only and partial clients are back above the helper loop, and the step no longer claims ATS timed out. **Comments and docs (Bryan):** the `get_log_fingerprint` comment names both the earlier keep-alive and the later HTTP/2 stream cases, `handle_ssn_close` notes that HQSession never fires SSN_CLOSE, and the docs say an HTTP/2 stream whose logging is delayed may log `-` for JA4H. **Smaller items (maskit):** the commit message and PR description now say a handshake-only connection logs nothing and only checks that ATS stays up, the replay file's "Used by" names `test_jax_fingerprint_log_field.py`, and `userarg.h` includes `<cstdint>`, `<optional>`, `<string>` and `<string_view>` itself. All 21 jax/ja3/ja4 fingerprint urtests pass locally. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
