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
>> >> > >
>> >> >
>> >>
>> >
>>
>

Reply via email to