<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schinazi-httpbis-wrap-up-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title>The HTTP Wrap Up Capsule</title>
    <seriesInfo name="Internet-Draft" value="draft-schinazi-httpbis-wrap-up-01"/>
    <author initials="D." surname="Schinazi" fullname="David Schinazi">
      <organization>Google LLC</organization>
      <address>
        <postal>
          <street>1600 Amphitheatre Parkway</street>
          <city>Mountain View</city>
          <region>CA</region>
          <code>94043</code>
          <country>United States of America</country>
        </postal>
        <email>dschinazi.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="16"/>
    <area>Web and Internet Transport</area>
    <workgroup>HTTPBIS</workgroup>
    <keyword>secure</keyword>
    <keyword>tunnels</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <abstract>
      <?line 55?>

<t>HTTP intermediaries sometimes need to terminate long-lived request streams in
order to facilitate load balancing or impose data limits. However, Web browsers
commonly cannot retry failed proxied requests when they cannot ascertain
whether an in-progress request was acted on. To avoid user-visible failures, it
is best for the intermediary to inform the client of upcoming request stream
terminations in advance of the actual termination so that the client can wrap
up existing operations related to that stream and start sending new work to a
different stream or connection. This document specifies a new "WRAP_UP" capsule
that allows a proxy to instruct a client that it should not start new requests
on a tunneled connection, while still allowing it to finish existing requests.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://davidschinazi.github.io/draft-schinazi-httpbis-wrap-up/#go.draft-schinazi-httpbis-wrap-up.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schinazi-httpbis-wrap-up/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        which is archived at <eref target="https://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
        Working Group information can be found at <eref target="https://httpwg.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/DavidSchinazi/draft-schinazi-httpbis-wrap-up"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="H1"/>, <xref target="H2"/> and <xref target="H3"/> all have the notion of persistent connections, where
a single connection can carry multiple request and response messages. While it
is expected that the connection persists, there are situations where a client
or server may wish to terminate the connection gracefully.</t>
      <t>An HTTP/1.1 connection can be terminated by using a Connection header field
with the close option; see <xref section="9.6" sectionFormat="of" target="H1"/>. When a connection has
short-lived requests/responses, this mechanism allows timely and non-disruptive
connection termination. However, when requests/responses are longer lived, the
opportunity to use headers happens less frequently (or not at all). There is no
way for client or server to signal a future intent to terminate the connection.
Instead, an abrupt termination, realized via a transport-layer close or reset,
is required, which is potentially disruptive and can lead to truncated content.</t>
      <t>HTTP/2 and HTTP/3 support request multiplexing, making header-based connection
lifecycle control impractical. Connection headers are prohibited entirely.
Instead, a shutdown process using the GOAWAY frame is defined (see <xref section="6.8" sectionFormat="of" target="H2"/> and <xref section="5.2" sectionFormat="of" target="H3"/>). GOAWAY signals a future intent to
terminate the connection, supporting cases such as scheduled maintenance.
Active requests/responses can continue to run, while new requests need to be
sent on a new HTTP connection. Endpoints that use GOAWAY typically have a grace
period in which requests/responses can run naturally to completion. If they run
longer than the grace period, they are abruptly terminated when the the
transport layer is closed or reset, which is potentially disruptive and can
lead to truncated content.</t>
      <section anchor="the-need-for-a-request-termination-intent-signal">
        <name>The Need for a Request Termination Intent Signal</name>
        <t>Intermediaries (see <xref section="3.7" sectionFormat="of" target="HTTP"/>) can provide a variety of
benefits to HTTP systems, such as load balancing, caching, and privacy
improvements. Deployments of intermediaries also need to be maintained, which
can sometimes require taking intermediaries temporarily offline. For example,
if a gateway has a client HTTP/2 connection and needs to go down for
maintenance, it can send a GOAWAY to stop the client issuing requests that
would be forwarded to the origin.</t>
        <figure anchor="diagram-gateway">
          <name>Gateway Sends GOAWAY</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="352" viewBox="0 0 352 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,160" fill="none" stroke="black"/>
                <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
                <path d="M 80,144 L 80,160" fill="none" stroke="black"/>
                <path d="M 104,160 L 104,176" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,80" fill="none" stroke="black"/>
                <path d="M 136,144 L 136,160" fill="none" stroke="black"/>
                <path d="M 200,64 L 200,96" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,80" fill="none" stroke="black"/>
                <path d="M 216,144 L 216,160" fill="none" stroke="black"/>
                <path d="M 248,160 L 248,176" fill="none" stroke="black"/>
                <path d="M 272,32 L 272,80" fill="none" stroke="black"/>
                <path d="M 272,144 L 272,160" fill="none" stroke="black"/>
                <path d="M 328,64 L 328,128" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,160" fill="none" stroke="black"/>
                <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
                <path d="M 136,32 L 216,32" fill="none" stroke="black"/>
                <path d="M 272,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 80,78 L 136,78" fill="none" stroke="black"/>
                <path d="M 80,82 L 136,82" fill="none" stroke="black"/>
                <path d="M 216,80 Q 218,76.8 220,80 Q 222,83.2 224,80 Q 226,76.8 228,80 Q 230,83.2 232,80 Q 234,76.8 236,80 Q 238,83.2 240,80 Q 242,76.8 244,80 Q 246,83.2 248,80 Q 250,76.8 252,80 Q 254,83.2 256,80 Q 258,76.8 260,80 Q 262,83.2 264,80 Q 266,76.8 268,80 Q 270,83.2 272,80 " fill="none" stroke="black"/>
                <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 64,128 L 328,128" fill="none" stroke="black"/>
                <path d="M 80,142 L 136,142" fill="none" stroke="black"/>
                <path d="M 80,146 L 136,146" fill="none" stroke="black"/>
                <path d="M 216,144 Q 218,140.8 220,144 Q 222,147.2 224,144 Q 226,140.8 228,144 Q 230,147.2 232,144 Q 234,140.8 236,144 Q 238,147.2 240,144 Q 242,140.8 244,144 Q 246,147.2 248,144 Q 250,140.8 252,144 Q 254,147.2 256,144 Q 258,140.8 260,144 Q 262,147.2 264,144 Q 266,140.8 268,144 Q 270,147.2 272,144 " fill="none" stroke="black"/>
                <path d="M 8,160 L 80,160" fill="none" stroke="black"/>
                <path d="M 136,160 L 216,160" fill="none" stroke="black"/>
                <path d="M 272,160 L 344,160" fill="none" stroke="black"/>
                <path d="M 80,192 L 88,192" fill="none" stroke="black"/>
                <path d="M 264,192 L 272,192" fill="none" stroke="black"/>
                <path d="M 88,192 C 96.83064,192 104,184.83064 104,176" fill="none" stroke="black"/>
                <path d="M 264,192 C 255.16936,192 248,184.83064 248,176" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="256,160 244,154.4 244,165.6" fill="black" transform="rotate(270,248,160)"/>
                <polygon class="arrowhead" points="112,160 100,154.4 100,165.6" fill="black" transform="rotate(270,104,160)"/>
                <polygon class="arrowhead" points="72,128 60,122.4 60,133.6" fill="black" transform="rotate(180,64,128)"/>
                <polygon class="arrowhead" points="72,96 60,90.4 60,101.6" fill="black" transform="rotate(180,64,96)"/>
                <circle cx="200" cy="64" r="6" class="closeddot" fill="black"/>
                <circle cx="328" cy="64" r="6" class="closeddot" fill="black"/>
                <g class="text">
                  <text x="44" y="52">Client</text>
                  <text x="176" y="52">Gateway</text>
                  <text x="308" y="52">Origin</text>
                  <text x="172" y="84">GOAWAY</text>
                  <text x="228" y="116">HTTP</text>
                  <text x="288" y="116">Responses</text>
                  <text x="56" y="196">TLS</text>
                  <text x="296" y="196">TLS</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+--------+      +---------+      +--------+
| Client |      | Gateway |      | Origin |
|        |      |       * |      |      * |
|        +======+ GOAWAY| +~~~~~~+      | |
|      <----------------+               | |
|                         HTTP Responses| |
|      <--------------------------------+ |
|        +======+         +~~~~~~+        |
+--------+  ^   +---------+   ^  +--------+
            |                 |
     TLS --'                   '-- TLS
]]></artwork>
          </artset>
        </figure>
        <t>The connection close details described above apply to an intermediary's
upstream and downstream connections. Since a proxy can do request aggregation
or fan out, there is no guarantee of a 1:1 ratio of upstream/downstream. As
such, the lifetimes of these connections are not coupled tightly. For example,
a gateway can terminate a client HTTP/2 connections and map individual requests
to an origin HTTP/1.1 connection pool. If any single origin connection
indicates an intent to close, it doesn't make sense for the gateway to issue a
GOAWAY to the client, or to respond to a client GOAWAY by closing connections
in the pool.</t>
        <t>Long-lived requests pose a problem for maintenance, especially for HTTP/2 and
HTTP/3, and even more so for intermediaries. Sometimes they need to terminate
individual request streams in order to facilitate load balancing or impose data
limits, while leaving the connection still active. GOAWAY is not suitable for
this task.</t>
        <t>Some applications using HTTP have their own control plane running over HTTP,
that could be used for a graceful termination. For example, WebSockets has
separate control and data frames. The Close frame (<xref section="5.5.1" sectionFormat="of" target="WEBSOCKET"/>) is used for the WebSocket close sequence. However, in the
maintenance scenario, an intermediary that is not WebSocket aware cannot use
the formal sequence. Nor is there any standard for it to signal to the
endpoints to initiate that sequence. Some intermediaries are WebSocket aware,
and in theory could send Close frames. However, there can be other
considerations that prevent this working effectively in real deployments, since
the intermediary is a generic proxy that may invalidate endpoint expectations.</t>
        <t>Many long-lived HTTP request types do not have control messages that could
signal an intent to terminate the request. For example, see CONNECT (<xref section="9.3.6" sectionFormat="of" target="HTTP"/>) or connect-udp ({?CONNECT-UDP=RFC9298}}). In these models, the
client requests that a proxy create a tunnel to a target origin. On success,
the newly established tunnel is used as the underlying transport to then
establish a second HTTP connection directly to the origin. In that situation,
the proxy cannot inspect the contents of the tunnel, nor inject any data into
it; the proxy only sees a single long-lived request. The proxy is responsible
for managing the lifetime of the tunnel, but can only terminate it abortively.
Such abrupt termination can lead to truncated content, which the client cannot
safely request again. This is especially disruptive if the tunnelled HTTP
connection has many active requests. Web browsers, for example, commonly cannot
retry failed proxied requests when they cannot ascertain whether an in-progress
request was acted on.</t>
        <t>To avoid user-visible failures, it is best for the proxy to inform the client
of upcoming request stream terminations in advance of the actual termination.
This allows the client to wrap up existing operations related to that stream
and start sending new work to a different stream or connection.</t>
      </section>
      <section anchor="the-wrapup-capsule">
        <name>The WRAP_UP Capsule</name>
        <figure anchor="diagram-proxy">
          <name>Proxy Sends WRAP_UP</name>
          <artset>
            <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="352" viewBox="0 0 352 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,32 L 8,192" fill="none" stroke="black"/>
                <path d="M 80,32 L 80,80" fill="none" stroke="black"/>
                <path d="M 80,160 L 80,192" fill="none" stroke="black"/>
                <path d="M 104,192 L 104,208" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,80" fill="none" stroke="black"/>
                <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
                <path d="M 200,64 L 200,96" fill="none" stroke="black"/>
                <path d="M 216,32 L 216,112" fill="none" stroke="black"/>
                <path d="M 216,160 L 216,192" fill="none" stroke="black"/>
                <path d="M 248,176 L 248,208" fill="none" stroke="black"/>
                <path d="M 272,32 L 272,112" fill="none" stroke="black"/>
                <path d="M 272,160 L 272,192" fill="none" stroke="black"/>
                <path d="M 328,64 L 328,144" fill="none" stroke="black"/>
                <path d="M 344,32 L 344,192" fill="none" stroke="black"/>
                <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
                <path d="M 136,32 L 216,32" fill="none" stroke="black"/>
                <path d="M 272,32 L 344,32" fill="none" stroke="black"/>
                <path d="M 80,78 L 136,78" fill="none" stroke="black"/>
                <path d="M 80,82 L 136,82" fill="none" stroke="black"/>
                <path d="M 64,96 L 200,96" fill="none" stroke="black"/>
                <path d="M 80,112 Q 82,108.8 84,112 Q 86,115.2 88,112 Q 90,108.8 92,112 Q 94,115.2 96,112 Q 98,108.8 100,112 Q 102,115.2 104,112 Q 106,108.8 108,112 Q 110,115.2 112,112 Q 114,108.8 116,112 Q 118,115.2 120,112 Q 122,108.8 124,112 Q 126,115.2 128,112 Q 130,108.8 132,112 Q 134,115.2 136,112 Q 138,108.8 140,112 Q 142,115.2 144,112 Q 146,108.8 148,112 Q 150,115.2 152,112 Q 154,108.8 156,112 Q 158,115.2 160,112 Q 162,108.8 164,112 Q 166,115.2 168,112 Q 170,108.8 172,112 Q 174,115.2 176,112 Q 178,108.8 180,112 Q 182,115.2 184,112 Q 186,108.8 188,112 Q 190,115.2 192,112 Q 194,108.8 196,112 Q 198,115.2 200,112 Q 202,108.8 204,112 Q 206,115.2 208,112 Q 210,108.8 212,112 Q 214,115.2 216,112 Q 218,108.8 220,112 Q 222,115.2 224,112 Q 226,108.8 228,112 Q 230,115.2 232,112 Q 234,108.8 236,112 Q 238,115.2 240,112 Q 242,108.8 244,112 Q 246,115.2 248,112 Q 250,108.8 252,112 Q 254,115.2 256,112 Q 258,108.8 260,112 Q 262,115.2 264,112 Q 266,108.8 268,112 Q 270,115.2 272,112 " fill="none" stroke="black"/>
                <path d="M 64,144 L 328,144" fill="none" stroke="black"/>
                <path d="M 80,160 Q 82,156.8 84,160 Q 86,163.2 88,160 Q 90,156.8 92,160 Q 94,163.2 96,160 Q 98,156.8 100,160 Q 102,163.2 104,160 Q 106,156.8 108,160 Q 110,163.2 112,160 Q 114,156.8 116,160 Q 118,163.2 120,160 Q 122,156.8 124,160 Q 126,163.2 128,160 Q 130,156.8 132,160 Q 134,163.2 136,160 Q 138,156.8 140,160 Q 142,163.2 144,160 Q 146,156.8 148,160 Q 150,163.2 152,160 Q 154,156.8 156,160 Q 158,163.2 160,160 Q 162,156.8 164,160 Q 166,163.2 168,160 Q 170,156.8 172,160 Q 174,163.2 176,160 Q 178,156.8 180,160 Q 182,163.2 184,160 Q 186,156.8 188,160 Q 190,163.2 192,160 Q 194,156.8 196,160 Q 198,163.2 200,160 Q 202,156.8 204,160 Q 206,163.2 208,160 Q 210,156.8 212,160 Q 214,163.2 216,160 Q 218,156.8 220,160 Q 222,163.2 224,160 Q 226,156.8 228,160 Q 230,163.2 232,160 Q 234,156.8 236,160 Q 238,163.2 240,160 Q 242,156.8 244,160 Q 246,163.2 248,160 Q 250,156.8 252,160 Q 254,163.2 256,160 Q 258,156.8 260,160 Q 262,163.2 264,160 Q 266,156.8 268,160 Q 270,163.2 272,160 " fill="none" stroke="black"/>
                <path d="M 80,174 L 136,174" fill="none" stroke="black"/>
                <path d="M 80,178 L 136,178" fill="none" stroke="black"/>
                <path d="M 8,192 L 80,192" fill="none" stroke="black"/>
                <path d="M 136,192 L 216,192" fill="none" stroke="black"/>
                <path d="M 272,192 L 344,192" fill="none" stroke="black"/>
                <path d="M 80,224 L 88,224" fill="none" stroke="black"/>
                <path d="M 264,224 L 272,224" fill="none" stroke="black"/>
                <path d="M 88,224 C 96.83064,224 104,216.83064 104,208" fill="none" stroke="black"/>
                <path d="M 264,224 C 255.16936,224 248,216.83064 248,208" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="256,176 244,170.4 244,181.6" fill="black" transform="rotate(270,248,176)"/>
                <polygon class="arrowhead" points="112,192 100,186.4 100,197.6" fill="black" transform="rotate(270,104,192)"/>
                <polygon class="arrowhead" points="72,144 60,138.4 60,149.6" fill="black" transform="rotate(180,64,144)"/>
                <polygon class="arrowhead" points="72,96 60,90.4 60,101.6" fill="black" transform="rotate(180,64,96)"/>
                <circle cx="200" cy="64" r="6" class="closeddot" fill="black"/>
                <circle cx="328" cy="64" r="6" class="closeddot" fill="black"/>
                <g class="text">
                  <text x="44" y="52">Client</text>
                  <text x="176" y="52">Proxy</text>
                  <text x="308" y="52">Origin</text>
                  <text x="168" y="84">WRAP_UP</text>
                  <text x="228" y="132">HTTP</text>
                  <text x="288" y="132">Responses</text>
                  <text x="56" y="228">TLS</text>
                  <text x="296" y="228">TLS</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art"><![CDATA[
+--------+      +---------+      +--------+
| Client |      |  Proxy  |      | Origin |
|        |      |       * |      |      * |
|        +======+WRAP_UP| |      |      | |
|      <----------------+ |      |      | |
|        +~~~~~~~~~~~~~~~~+~~~~~~+      | |
|                         HTTP Responses| |
|      <--------------------------------+ |
|        +~~~~~~+~~~~~~~~~+~~~~~~+        |
|        +======+         |   ^  +        |
+--------+  ^   +---------+   |  +--------+
            |                 |
     TLS --'                   '-- TLS
]]></artwork>
          </artset>
        </figure>
        <t>This document specifies a new "WRAP_UP" capsule (see <xref section="3" sectionFormat="of" target="HTTP-DGRAM"/>), which a server can send on an HTTP Data Stream, to
inform a client that it intends to close the stream.</t>
        <t>An HTTP proxy can send a WRAP_UP capsule to instruct a client that it should
not start new requests on a tunneled connection, while still allowing it to
finish existing requests.</t>
      </section>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This document uses the terms "connection", "client", and "server" from
<xref section="3.3" sectionFormat="of" target="HTTP"/> and the terms "intermediary", "proxy", and "gateway"
from <xref section="3.7" sectionFormat="of" target="HTTP"/>.</t>
      </section>
    </section>
    <section anchor="mechanism">
      <name>Mechanism</name>
      <t>This document defines the "WRAP_UP" capsule (see <xref target="iana"/> for the value). The
WRAP_UP capsule allows a proxy to indicate to a client that it wishes to close
the request stream that the capsule was sent on. The WRAP_UP capsule has no
Capsule Value.</t>
      <section anchor="proxy-behavior">
        <name>Proxy Behavior</name>
        <t>Proxies often know in advance that they will close a request stream. This can
be due to maintenance of the proxy itself, load balancing, or applying data
usage limits on a particular stream. When a proxy has advance notice that it
will soon close a request stream, it <bcp14>MAY</bcp14> send a WRAP_UP capsule to share that
information with the client. This can also be used when the proxy wishes to
release resources associated with a request stream, such as HTTP Datagrams (see
<xref section="2" sectionFormat="of" target="HTTP-DGRAM"/>) or WebTransport streams (see
<xref target="WEBTRANSPORT"/>).</t>
      </section>
      <section anchor="client-handling">
        <name>Client Handling</name>
        <t>When a client receives a WRAP_UP capsule on a request stream, it <bcp14>SHOULD</bcp14> try to
wrap up its use of that stream. For example, if the stream carried a
connect-udp request and is used as the underlying transport for an HTTP/3
connection, then after receiving a WRAP_UP capsule the client <bcp14>SHOULD NOT</bcp14> send
any new requests on the proxied HTTP/3 connection - but existing in-progress
proxied requests are not affected by the WRAP_UP capsule.</t>
      </section>
      <section anchor="minutiae">
        <name>Minutiae</name>
        <t>Clients <bcp14>MUST NOT</bcp14> send the WRAP_UP capsule. If a server receives a WRAP_UP
capsule, it <bcp14>MUST</bcp14> abort the corresponding request stream. Endpoints <bcp14>MUST NOT</bcp14>
send the WRAP_UP capsule with a non-zero Capsule Length. If an endpoint
receives a WRAP_UP capsule with a non-zero Capsule Length, it <bcp14>MUST</bcp14> abort the
corresponding request stream. Proxies <bcp14>MUST NOT</bcp14> send more than one WRAP_UP
capsule on a given stream. If a client receives a second WRAP_UP capsule on a
given request stream, it <bcp14>MUST</bcp14> abort the stream. Endpoints that abort the
request stream due to an unexpected or malformed WRAP_UP capsule <bcp14>MUST</bcp14> follow
the error-handling procedure defined in <xref section="3.3" sectionFormat="of" target="HTTP-DGRAM"/>.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>While it might be tempting for clients to implement the WRAP_UP capsule by
treating it as if they had received a GOAWAY inside the encryption of the
end-to-end connection, doing so has security implications. GOAWAY carries
semantics around which requests have been acted on, and those can have security
implications. Since WRAP_UP is sent by a proxy outside of the end-to-end
encryption, it cannot be trusted to ascertain whether any requests were handled
by the origin. Because of this, client implementations can only use receipt of
WRAP_UP as a hint and <bcp14>MUST NOT</bcp14> use it to make determinations on whether any
requests were handled by the origin or not.</t>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document (if approved) will request IANA to add the following entry to the
"HTTP Capsule Types" registry maintained at
&lt;<eref target="https://www.iana.org/assignments/masque"/>&gt;.</t>
      <dl spacing="compact" newline="false">
        <dt>Value:</dt>
        <dd>
          <t>0x272DDA5E (will be changed to a lower value if this document is approved)</t>
        </dd>
        <dt>Capsule Type:</dt>
        <dd>
          <t>WRAP_UP</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional (will be permanent if this document is approved)</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Change Controller:</dt>
        <dd>
          <t>IETF</t>
        </dd>
        <dt>Contact:</dt>
        <dd>
          <t>ietf-http-wg@w3.org</t>
        </dd>
        <dt>Notes:</dt>
        <dd>
          <t>None</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <displayreference target="H1" to="HTTP/1.1"/>
    <displayreference target="H2" to="HTTP/2"/>
    <displayreference target="H3" to="HTTP/3"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="HTTP-DGRAM">
          <front>
            <title>HTTP Datagrams and the Capsule Protocol</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes HTTP Datagrams, a convention for conveying multiplexed, potentially unreliable datagrams inside an HTTP connection.</t>
              <t>In HTTP/3, HTTP Datagrams can be sent unreliably using the QUIC DATAGRAM extension. When the QUIC DATAGRAM frame is unavailable or undesirable, HTTP Datagrams can be sent using the Capsule Protocol, which is a more general convention for conveying data in HTTP connections.</t>
              <t>HTTP Datagrams and the Capsule Protocol are intended for use by HTTP extensions, not applications.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9297"/>
          <seriesInfo name="DOI" value="10.17487/RFC9297"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="H1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="H2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="H3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="WEBSOCKET">
          <front>
            <title>The WebSocket Protocol</title>
            <author fullname="I. Fette" initials="I." surname="Fette"/>
            <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
            <date month="December" year="2011"/>
            <abstract>
              <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6455"/>
          <seriesInfo name="DOI" value="10.17487/RFC6455"/>
        </reference>
        <reference anchor="WEBTRANSPORT">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="25" month="August" year="2024"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables clients
   constrained by the Web security model to communicate with a remote
   server using a secure multiplexed transport.  This document describes
   a WebTransport protocol that is based on HTTP/3 [HTTP3] and provides
   support for unidirectional streams, bidirectional streams and
   datagrams, all multiplexed within the same HTTP/3 connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-10"/>
        </reference>
      </references>
    </references>
    <?line 309?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>This mechanism was inspired by the GOAWAY frame from HTTP/2.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
hhjAPcbm1KhpyLKaN6FOqTfZQ1zK07BZi514XTKU6Ii623PzjIYC3dIvbv4D
ysXuEXNSlORUlS+WV6FXr2czzdYKdzQ5V4LIFQ06G1KYSrycevI1hJLmwIal
SWIfiBahfoPJ71BP0imEjIIJzQ3PDkz+nMTaaUayqUc3peME6kqx8tj+owHG
xolsrVzEgji/txQOdDeMnXDx8eXFxavj247diufjw9CPAEtkqW3HbFSnBYZ+
H2aN3p54CH3w/Buu207zkIqWNtWZb9WIEFV7CK/Nm5A3JxzfA/NxuFLlXFcR
68nLnJA2VZxDVgNKK+gKtBBLjFtQ2POTo0spNl1Z59B/tuYg1dQr3l5z0Uyn
wlYnNlTe3VCWAlInlQcJHezpd0mGHbtPnq0GCJDSTE5BvmliVRHocwHF3A6h
XArq/6JhZAwcV6BBK0z1V9lS5P4xdEX2FlLmdhPbRyI/gbsTDAyp7yt8/snV
PEbrCB02+ZnWHrTzgq0Bwd2BmErvImNxw0XPVg/l4RZHrAb7/V4ISjg1I89r
gZMysStLHcE2VXYqR9PlOwvOI/odM9ryOuShtkHa684POZo17rDRqxf/bq9e
7u7Vi529eoDW32zWy81mfafrvNGlF/d36eUf7tKPBash9hJb1WFl6tTLP9Sp
F7/RqZe/0alvmgGhJd8cHP9ppaC8Yrn+2aVg4PfjxtiHS8F7xzYVWvu5t8Tc
8fmzysbeyls8yAdLTHpDZWM79uES8+P/R4kZfMoXmN4QfHkZT4C4vvxDZ0Vb
nScCg9x3Gp28vp6ch9T5NVJnjI8q9rmb5gl3XLzaTihB3LBvDKkHGrx/68SJ
UYDvz3goSa4bisjmdKNTt4YmTfSryP3vONUSu0+15L9zqiUeONWC5x/bnLBb
U4KeUIfZ+JKMC//3CMV0e8DJwfnbm9vB0P8rLy75+/Wr/3x7ev3qhL7fvJmc
nTVfRBhx8+by7dlJ+62deXx5fv7q4sRPxlPZeyQG55OfBr5oG1xe3Z5eXkzO
Bh6/du2FkK5v5zGOBBitGKuItjOBOS+Pr/73f/afwmz+AvM42N9//ulT+PHN
/tdP8YMyj1+Ns5X/SZlI0EmLKjm2Q7zQI8otQmHU/F5Q7UQwGeL84u8kmX8c
yW+nSbH/9LvwgDbcexhl1nvIMtt+sjXZC3HHox3LNNLsPd+QdJ/fyU+931Hu
nYfffk+dTjna/+b778Sm89bO182c72AyrY2Sjr2xR516lxyg7LBL0W0kH7Yo
mUd26HVLBaLI3hYJhh7FQBDF7da0p0hmL8/jid4m//6AxW/h3sBjgPrAWoQN
qElq7Q/axKaz7zrR9k2YXmskuj8dqOo2wohOkdHAjeYMNyxBuCecj4x7iTwO
INSWWxHyuvwbseud38fjlxqlkLGlEFeMxghQI9LJ97lddQFNXJnOfckPMt+P
6fMXMCYdQMAjU3/C062sAywKkLpyOpsNtzr91FegPiLFK+6R1FSdhUshPgwW
iI4mqTM4Zlw5HPF60txuD5zT0XvcgKkEs+9s08rc3AODw3M6KLs3grsFhx1q
qjd3eECvcyxNem2F4Y8eYt+kOfPxrDZaB5YF1Hekc2frMqEc6JxNjD8pIuLb
vMbTkiaXUd71xzMdrzqIHuBzZKg/Aduba3hNEyvMpPbK7fXk4ubq8vr2xeno
hK9KjVZ6ylUfXzXjY0WfR0JjE46I8DAXIp63xyo10XS1boc0WZs7FBCiWsUX
Z0QExqR/Ot9jM1Kt1fUq8FDIxPayKkuqMZToltvd+xO/p8DlXlcer0t1c2/F
O4XLlGGb/urCltW0QL8N2GxigkqqzUQfzcPo5uy6U4mNuKpscnq3HtoqqWLP
WnFHxt+vqLbjhNfjucnryijAf69RJ2MK896wayI3niPC2ta0COO8WxE1rntD
DV+GVvF2ZdU9141MiPuYiN5B9zF+1qWNZYw80/m8WoTmeNM2Eg8Y5MOUduxC
PLyLGFX7guQWNB8Y21xviso7xdxQrzqSYSFvu1NosuzyKuEJ7ApufS1sy9s3
k5oNbuSgENbBe503l4u4HZJRLNTb7PCCM0vZkJOaLktbjhYhWvibDyldRYg3
HJB3dkKCGL44jd/QXVa6G3Pc60pS8PG3n+SSzmf89aJlwa7SXn/xPVWKGEuf
g7eNaroWtOMqoGnEBxNO/RcqjVronMQaZoNJ6Twp10W88hV6uaPKjkj53fCR
WqKO7LDgRB52RHzFrn3T7/eRjPrnSwXMnpBvW0SrjVsMvrU51RSWQkNkGIAU
pTtKRzwiLib6i/kTuCgKE9AFgkZMrbaueJshlbf7Eu2m41E1BR4Sf1m70LvY
1dBZdxpA1HJmw9CpCJEqdghf6kQ1wd8AgcfT7qjE0Clpum0151JoqaCLlg06
45P4BXWPSSqNX9Jo34TnA7BU91o7tsew2Mmw7DEs/VUsNtXTycVkw0zlL48Y
SW5i0Md0baDgWw3p5x5rRf9jKiTD1AdB71Hcbs99omRL4/vzTdy6pa73gK9P
OxrU3nqQgC/f/v0fj+M99NVqNSaW+DY8kIeZ59ys3/O3wz//Dlth+HgkxJH8
8sPB1wcnJ5Nnr+Rj5hJ6Jlg9D3oGqoNsPDz2ftPdJXXA4iaF6PLKxGNAFHSN
u3b8jK+R0J8mqKxdsYCOVM4UH17iWnMbLPH0eyLH+sw3KYiOAzL6YwcR/vhB
0EP4ET/Z8VcFQlzYSnsOLxDLqf3hCkVA9sWALgxh7oCb6xD5i8EMSFBT12M0
QhJXyXuyjklCYBsGNGd5g4T/kwuddibc9u8iEu6ndjjdlot217svxlWQPwUd
i/8DiQtZWSsyAAA=

-->

</rfc>
