<?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-ietf-httpbis-wrap-up-00" 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-ietf-httpbis-wrap-up-00"/>
    <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="2025" month="January" day="08"/>
    <area>Web and Internet Transport</area>
    <workgroup>HTTPBIS</workgroup>
    <keyword>secure</keyword>
    <keyword>tunnels</keyword>
    <keyword>masque</keyword>
    <keyword>http-ng</keyword>
    <abstract>
      <?line 57?>

<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://httpwg.org/http-extensions/draft-ietf-httpbis-wrap-up.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-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/httpwg/http-extensions/labels/wrap-up"/>.</t>
    </note>
  </front>
  <middle>
    <?line 70?>

<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="21" month="October" 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-11"/>
        </reference>
      </references>
    </references>
    <?line 311?>

<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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
IH8KOhb/B4Bb+84TMgAA

-->

</rfc>
