@@ -1440,13 +1440,13 @@ period of time. A QUIC connection, once established, can be terminated in one
1440
1440
of three ways :
1441
1441
1442
1442
1. Explicit Shutdown : An endpoint sends a CONNECTION_CLOSE frame to
1443
- initiate a connection termination . An endpoint MAY use application-layer
1444
- mechanisms to gracefully close activity on the connection. On termination of
1445
- the active streams, a CONNECTION_CLOSE may be sent. If an endpoint sends a
1446
- CONNECTION_CLOSE frame while unterminated streams are active (no FIN bit or
1447
- RST_STREAM frames have been sent or received for one or more streams), then
1448
- the peer must assume that the streams were incomplete and were abnormally
1449
- terminated.
1443
+ terminate the connection. An endpoint MAY use application-layer mechanisms
1444
+ prior to a CONNECTION_CLOSE to indicate that the connection will soon be
1445
+ terminated. On termination of the active streams, a CONNECTION_CLOSE may be
1446
+ sent. If an endpoint sends a CONNECTION_CLOSE frame while unterminated
1447
+ streams are active (no FIN bit or RST_STREAM frames have been sent or
1448
+ received for one or more streams), then the peer must assume that the streams
1449
+ were incomplete and were abnormally terminated.
1450
1450
1451
1451
2. Implicit Shutdown : The default idle timeout is a required parameter in
1452
1452
connection negotiation. The maximum is 10 minutes. If there is no network
@@ -1465,9 +1465,18 @@ of three ways:
1465
1465
should send a Public Reset packet in return. (TODO : articulate rules around
1466
1466
when a public reset should be sent.)
1467
1467
1468
- TODO : Connections that are terminated are added to a TIME_WAIT list at the
1469
- server, so as to absorb any straggler packets in the network. Discuss TIME_WAIT
1470
- list.
1468
+ After receiving either a CONNECTION_CLOSE frame or a Public Reset, an
1469
+ endpoint MUST NOT send additional packets on that connection. After
1470
+ sending either a CONNECTION_CLOSE frame or a Public Reset packet,
1471
+ implementations MUST NOT send any non-closing packets on that
1472
+ connection. If additional packets are received after this time and
1473
+ before idle_timeout seconds has passed, implementations SHOULD respond
1474
+ to them by sending a CONNECTION_CLOSE (which MAY just be a duplicate
1475
+ of the previous CONNECTION_CLOSE packet) but MAY also send a Public
1476
+ Reset packet. Implementations SHOULD throttle these responses, for
1477
+ instance by exponentially backing off the number of packets which are
1478
+ received before sending a response. After this time, implementations
1479
+ SHOULD respond to unexpected packets with a Public Reset packet.
1471
1480
1472
1481
# Frame Types and Formats
1473
1482
0 commit comments