I didn't find a specific test that tests for connection close in H2, so I wrote a simple one this morning and confirmed that changing the header with hook TS_HTTP_SEND_RESPONSE_HDR_HOOK works. We'll have a discussion this afternoon to discuss it over.
On Mon, Jun 17, 2024 at 10:52 PM Fei Deng <duke8...@gmail.com> wrote: > Because of this? > https://github.com/apache/trafficserver/pull/11046#discussion_r1583528415 > > The code in the HttpTransact.cc that checks for the header removes the > header and never adds it back if it is a http2 connection. > > In an internal discussion in Yahoo I mentioned we can probably find a > exact moment to set the header, such that it happens after the check for > the whole “connection: keep-alive” and “connection: close” in > HttpTransact.cc, but at the end it was deemed too complicated, and a simple > flag set by an api might be easier for the plugins to use. > > Do we have a test for that feature mentioned in the docs? > > > Regards, > Fei Deng > > Sent from my iPhone > > > On Mon, Jun 17, 2024 at 10:45 PM Masakazu Kitajo <mas...@apache.org> > wrote: > >> It's a documented feature. >> >> https://docs.trafficserver.apache.org/en/9.2.x/admin-guide/plugins/header_rewrite.en.html#close-connections-for-draining >> >> https://docs.trafficserver.apache.org/en/latest/admin-guide/plugins/header_rewrite.en.html#close-connections-for-draining >> >> On Mon, Jun 17, 2024 at 8:32 PM Masakazu Kitajo <mas...@apache.org> >> wrote: >> >> > Purposefully? Where did it happen? I'd say it was broken. We have that >> use >> > case and need a FIX. >> > >> > Masakazu >> > >> > On Mon, Jun 17, 2024 at 6:47 PM Fei Deng <duke8...@apache.org> wrote: >> > >> >> Actually it’s not possible by setting the “Connection: close” header. >> That >> >> was the initial intention of PR #11046, but with all the discussions it >> >> looks like that functionality was taken out purposefully. >> >> >> >> Regards, >> >> Fei Deng >> >> >> >> Sent from my iPhone >> >> >> >> >> >> On Mon, Jun 17, 2024 at 8:42 PM Masakazu Kitajo <mas...@apache.org> >> >> wrote: >> >> >> >> > It has been possible by setting "Connection: Close" header, which >> means >> >> > that a server wants no more requests on the connection and wants to >> >> close >> >> > it. >> >> > >> >> > If you want to close a connection on some conditions, you could check >> >> the >> >> > conditions and set the header by header_rewrite (or any plugins). And >> >> those >> >> > plugins that used to work for H1 do the same for H2 as well without >> any >> >> > changes (and probably for H3 as well, though it's not implemented >> yet). >> >> > >> >> > From plugins' perspective, everything on ATS is HTTP/1. Headers are >> >> > converted to H1 representation (e.g. ":authority" -> "Host"). It's >> >> > natural to use the H1 interface between ATS core and plugins. In that >> >> way, >> >> > plugins don't even need to know/check the HTTP version. I don't think >> >> > having something just for H2 is a right thing, unless it's truly an >> H2 >> >> > specific thing (e.g. setting max H2 frame size). I didn't use "2" >> even >> >> for >> >> > ServerPush because I knew H3 was already coming. >> >> > >> >> > Masakazu >> >> > >> >> > On Mon, Jun 17, 2024 at 9:34 AM Fei Deng <duke8...@apache.org> >> wrote: >> >> > >> >> > > TSReturnCode TSHttp2GraceShutdown(TSHttpTxn txnp) >> >> > > >> >> > > With this new API, plugins can request a grace shutdown by sending >> >> GOAWAY >> >> > > frames (https://httpwg.org/specs/rfc7540.html#GOAWAY). >> >> > > >> >> > > This will also replace this PR >> >> > > https://github.com/apache/trafficserver/pull/11046 >> >> > > >> >> > > Fei Deng >> >> > > >> >> > >> >> >> > >> >