bneradt commented on PR #13838:
URL: https://github.com/apache/trafficserver/pull/13838#issuecomment-6636148001

   @bryancall Thanks. Rebased on master and pushed as 2daf16c211.
   
   **HTTP/3.** I ran `--log-field` over HTTP/3 with curl: two requests and one 
aborted request on the same connection. Two problems showed up, and both are 
now fixed or avoided here:
   - **Crash.** Every HTTP/3 connection segfaulted in 
`ProxySession::state_api_callout`, called from `HQSession::new_connection`. 
`HQSession` never set its mutex, so any global SSN_START hook crashed it, and 
the JA3/JA4 `--log-field` instances add one. `HQSession` now takes the 
connection mutex, as HTTP/1 and HTTP/2 do. This is a core change, in 
`Http3Session.cc`. It may be what you hit. If yours is something else, please 
share the repro and I'll add it.
   - **Leak.** HQSession never fires SSN_CLOSE, so the JA4H copies leaked. The 
plugin now keeps no session copies on QUIC sessions, and JA4H logs `-` over 
HTTP/3. The docs say so.
   
   `test_jax_fingerprint_log_field_http3` covers both cases, and it segfaults 
without the mutex line. With the fix, traffic_dump's manual HTTP/3 test no 
longer crashes either. It still fails, on the dump contents, because SSN_CLOSE 
never fires.
   
   **`TSLogStringUnmarshal`.** The title and description now name it as a 
public API fix, and so will the squash message. I added your plugin as 
`tests/tools/plugins/log_string_field.cc` and your test as 
`tests/uranium_tests/logging/test_log_string_unmarshal.py`.
   
   **Your non-blocking notes and the Copilot threads:**
   - **Load order.** I fixed this instead of documenting it. Every instance 
that shares the JA4H context now saves the copy, so load order no longer 
matters. The `log-field-second-instance` variant covers it.
   - **Export isolation.** Copies are now keyed by export registry and method. 
The `log-field-per-export` variant covers it.
   - **Freeing.** Both log-field tests count the session copies created and 
freed and require the counts to match.
   
   All 40 fingerprint, log and HTTP/3 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]

Reply via email to