maskit commented on issue #9783: URL: https://github.com/apache/trafficserver/issues/9783#issuecomment-1674078679
I looked into this a bit more. My comment above was not very accurate (the abort happens even if `transaction_done()` is called by HttpSM). There are (at least) two issues around this. When inactive timeout happens on a QUIC connection: 1. The event is not propagated to streams on the connection due to lack of implementation, and transactions keep running without knowing connection close due to timeout. This causes the abort. RESET_STREAM frame, which closes one stream, can cause a similar result too. 2. The event is not propagated to the session because there is no path to propagate events from QUICNetVC to Http3App/Session. Although closing streams/transactions at the destructors is doable, that would be the last resort if we have no idea why transactions are not closed. When inactive timeout happens, Http3App/Session should notify the event to all transactions. On H1 and H2, their session directly interacts SSLNetVC, so they call `SSLNetVC::do_io_read/write` and that establishes a way to propagate events. On H3, H3App/Session cannot directly read/write data from/to QUICNetVC (everything is done on streams), so it seemed like there's no need to call do_io_read/write. But we probably need to call them to receive events. -- 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: issues-unsubscr...@trafficserver.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org