diff --git a/draft-ietf-quic-http.html b/draft-ietf-quic-http.html index e4e91944d2..37f62b577d 100644 --- a/draft-ietf-quic-http.html +++ b/draft-ietf-quic-http.html @@ -1808,8 +1808,8 @@
1. An Extremely Abstract Description of QUIC¶
2. Fixed Properties of All QUIC Versions¶
3. Conventions and Definitions¶
4. Notational Conventions¶
5. QUIC Packets¶
5.1. Long Header¶
5.2. Short Header¶
5.3. Connection ID¶
5.4. Version¶
6. Version Negotiation¶
7. Security and Privacy Considerations¶
8. IANA Considerations¶
9. References¶
9.1. Normative References¶
9.2. Informative References¶
Appendix A. Incorrect Assumptions¶
Author's Address¶
1. Introduction¶
1.1. Conventions and Definitions¶
1.2. Notational Conventions¶
2. Compression Process Overview¶
2.1. Encoder¶
2.1.1. Limits on Dynamic Table Insertions¶
2.1.2. Blocked Streams¶
2.1.3. Avoiding Flow Control Deadlocks¶
2.1.4. Known Received Count¶
2.2. Decoder¶
2.2.1. Blocked Decoding¶
2.2.2. State Synchronization¶
2.2.3. Invalid References¶
3. Reference Tables¶
3.1. Static Table¶
3.2. Dynamic Table¶
3.2.1. Dynamic Table Size¶
3.2.2. Dynamic Table Capacity and Eviction¶
3.2.3. Maximum Dynamic Table Capacity¶
3.2.4. Absolute Indexing¶
3.2.5. Relative Indexing¶
3.2.6. Post-Base Indexing¶
4. Wire Format¶
4.1. Primitives¶
4.1.1. Prefixed Integers¶
4.1.2. String Literals¶
4.2. Encoder and Decoder Streams¶
4.3. Encoder Instructions¶
4.3.1. Set Dynamic Table Capacity¶
4.3.2. Insert With Name Reference¶
4.3.3. Insert With Literal Name¶
4.3.4. Duplicate¶
4.4. Decoder Instructions¶
4.4.1. Section Acknowledgment¶
4.4.2. Stream Cancellation¶
4.4.3. Insert Count Increment¶
4.5. Field Line Representations¶
4.5.1. Encoded Field Section Prefix¶
4.5.2. Indexed Field Line¶
4.5.3. Indexed Field Line With Post-Base Index¶
4.5.4. Literal Field Line With Name Reference¶
4.5.5. Literal Field Line With Post-Base Name Reference¶
4.5.6. Literal Field Line With Literal Name¶
5. Configuration¶
6. Error Handling¶
7. Security Considerations¶
7.1. Probing Dynamic Table State¶
7.1.1. Applicability to QPACK and HTTP¶
7.1.2. Mitigation¶
7.1.3. Never-Indexed Literals¶
7.2. Static Huffman Encoding¶
7.3. Memory Consumption¶
7.4. Implementation Limits¶
8.1. Settings Registration¶
8.2. Stream Type Registration¶
8.3. Error Code Registration¶
Appendix A. Static Table¶
Appendix B. Encoding and Decoding Examples¶
B.1. Literal Field Line With Name Reference¶
B.2. Dynamic Table¶
B.3. Speculative Insert¶
B.4. Duplicate Instruction, Stream Cancellation¶
B.5. Dynamic Table Insert, Eviction¶
Appendix C. Sample One Pass Encoding Algorithm¶
Appendix D. Change Log¶
D.1. Since draft-ietf-quic-qpack-19¶
D.2. Since draft-ietf-quic-qpack-18¶
D.3. Since draft-ietf-quic-qpack-17¶
D.4. Since draft-ietf-quic-qpack-16¶
D.5. Since draft-ietf-quic-qpack-15¶
D.6. Since draft-ietf-quic-qpack-14¶
D.7. Since draft-ietf-quic-qpack-13¶
D.8. Since draft-ietf-quic-qpack-12¶
D.9. Since draft-ietf-quic-qpack-11¶
D.10. Since draft-ietf-quic-qpack-10¶
D.11. Since draft-ietf-quic-qpack-09¶
D.12. Since draft-ietf-quic-qpack-08¶
D.13. Since draft-ietf-quic-qpack-06¶
D.14. Since draft-ietf-quic-qpack-05¶
D.15. Since draft-ietf-quic-qpack-04¶
D.16. Since draft-ietf-quic-qpack-03¶
D.17. Since draft-ietf-quic-qpack-02¶
D.18. Since draft-ietf-quic-qpack-01¶
D.19. Since draft-ietf-quic-qpack-00¶
D.20. Since draft-ietf-quic-qcram-00¶
Acknowledgments¶
Authors' Addresses¶
2. Conventions and Definitions¶
3. Design of the QUIC Transmission Machinery¶
4. Relevant Differences Between QUIC and TCP¶
4.1. Separate Packet Number Spaces¶
4.2. Monotonically Increasing Packet Numbers¶
4.3. Clearer Loss Epoch¶
4.4. No Reneging¶
4.5. More ACK Ranges¶
4.6. Explicit Correction For Delayed Acknowledgments¶
4.7. Probe Timeout Replaces RTO and TLP¶
4.8. The Minimum Congestion Window is Two Packets¶
5. Estimating the Round-Trip Time¶
5.1. Generating RTT samples¶
5.2. Estimating min_rtt¶
5.3. Estimating smoothed_rtt and rttvar¶
6. Loss Detection¶
6.1. Acknowledgment-Based Detection¶
6.1.1. Packet Threshold¶
6.1.2. Time Threshold¶
6.2. Probe Timeout¶
6.2.1. Computing PTO¶
6.2.2. Handshakes and New Paths¶
6.2.3. Speeding Up Handshake Completion¶
6.2.4. Sending Probe Packets¶
6.3. Handling Retry Packets¶
6.4. Discarding Keys and Packet State¶
7. Congestion Control¶
7.1. Explicit Congestion Notification¶
7.2. Initial and Minimum Congestion Window¶
7.3. Congestion Control States¶
7.3.1. Slow Start¶
7.3.2. Recovery¶
7.3.3. Congestion Avoidance¶
7.4. Ignoring Loss of Undecryptable Packets¶
7.5. Probe Timeout¶
7.6. Persistent Congestion¶
7.6.1. Duration¶
7.6.2. Establishing Persistent Congestion¶
7.6.3. Example¶
7.7. Pacing¶
7.8. Under-utilizing the Congestion Window¶
8. Security Considerations¶
8.1. Congestion Signals¶
8.2. Traffic Analysis¶
8.3. Misreporting ECN Markings¶
9. IANA Considerations¶
10. References¶
10.1. Normative References¶
10.2. Informative References¶
Appendix A. Loss Recovery Pseudocode¶
A.1. Tracking Sent Packets¶
A.1.1. Sent Packet Fields¶
A.2. Constants of Interest¶
A.3. Variables of interest¶
A.4. Initialization¶
A.5. On Sending a Packet¶
A.6. On Receiving a Datagram¶
A.7. On Receiving an Acknowledgment¶
A.8. Setting the Loss Detection Timer¶
A.9. On Timeout¶
A.10. Detecting Lost Packets¶
A.11. Upon Dropping Initial or Handshake Keys¶
Appendix B. Congestion Control Pseudocode¶
B.1. Constants of interest¶
B.2. Variables of interest¶
B.3. Initialization¶
B.4. On Packet Sent¶
B.5. On Packet Acknowledgment¶
B.6. On New Congestion Event¶
B.7. Process ECN Information¶
B.8. On Packets Lost¶
B.9. Removing Discarded Packets From Bytes In Flight¶
Appendix C. Change Log¶
C.1. Since draft-ietf-quic-recovery-32¶
C.2. Since draft-ietf-quic-recovery-31¶
C.3. Since draft-ietf-quic-recovery-30¶
C.4. Since draft-ietf-quic-recovery-29¶
C.5. Since draft-ietf-quic-recovery-28¶
C.6. Since draft-ietf-quic-recovery-27¶
C.7. Since draft-ietf-quic-recovery-26¶
C.8. Since draft-ietf-quic-recovery-25¶
C.9. Since draft-ietf-quic-recovery-24¶
C.10. Since draft-ietf-quic-recovery-23¶
C.11. Since draft-ietf-quic-recovery-22¶
C.12. Since draft-ietf-quic-recovery-21¶
C.13. Since draft-ietf-quic-recovery-20¶
C.14. Since draft-ietf-quic-recovery-19¶
C.15. Since draft-ietf-quic-recovery-18¶
C.16. Since draft-ietf-quic-recovery-17¶
C.17. Since draft-ietf-quic-recovery-16¶
C.18. Since draft-ietf-quic-recovery-14¶
C.19. Since draft-ietf-quic-recovery-13¶
C.20. Since draft-ietf-quic-recovery-12¶
C.21. Since draft-ietf-quic-recovery-11¶
C.22. Since draft-ietf-quic-recovery-10¶
C.23. Since draft-ietf-quic-recovery-09¶
C.24. Since draft-ietf-quic-recovery-08¶
C.25. Since draft-ietf-quic-recovery-07¶
C.26. Since draft-ietf-quic-recovery-06¶
C.27. Since draft-ietf-quic-recovery-05¶
C.28. Since draft-ietf-quic-recovery-04¶
C.29. Since draft-ietf-quic-recovery-03¶
C.30. Since draft-ietf-quic-recovery-02¶
C.31. Since draft-ietf-quic-recovery-01¶
C.32. Since draft-ietf-quic-recovery-00¶
C.33. Since draft-iyengar-quic-loss-recovery-01¶
Appendix D. Contributors¶
2. Notational Conventions¶
2.1. TLS Overview¶
4. Carrying TLS Messages¶
4.1. Interface to TLS¶
4.1.1. Handshake Complete¶
4.1.2. Handshake Confirmed¶
4.1.3. Sending and Receiving Handshake Messages¶
4.1.4. Encryption Level Changes¶
4.1.5. TLS Interface Summary¶
4.2. TLS Version¶
4.3. ClientHello Size¶
4.4. Peer Authentication¶
4.5. Session Resumption¶
4.6. 0-RTT¶
4.6.1. Enabling 0-RTT¶
4.6.2. Accepting and Rejecting 0-RTT¶
4.6.3. Validating 0-RTT Configuration¶
4.7. HelloRetryRequest¶
4.8. TLS Errors¶
4.9. Discarding Unused Keys¶
4.9.1. Discarding Initial Keys¶
4.9.2. Discarding Handshake Keys¶
4.9.3. Discarding 0-RTT Keys¶
5. Packet Protection¶
5.1. Packet Protection Keys¶
5.2. Initial Secrets¶
5.3. AEAD Usage¶
5.4. Header Protection¶
5.4.1. Header Protection Application¶
5.4.2. Header Protection Sample¶
5.4.3. AES-Based Header Protection¶
5.4.4. ChaCha20-Based Header Protection¶
5.5. Receiving Protected Packets¶
5.6. Use of 0-RTT Keys¶
5.7. Receiving Out-of-Order Protected Packets¶
5.8. Retry Packet Integrity¶
6. Key Update¶
6.1. Initiating a Key Update¶
6.2. Responding to a Key Update¶
6.3. Timing of Receive Key Generation¶
6.4. Sending with Updated Keys¶
6.5. Receiving with Different Keys¶
6.6. Limits on AEAD Usage¶
6.7. Key Update Error Code¶
8. QUIC-Specific Adjustments to the TLS Handshake¶
8.1. Protocol Negotiation¶
8.2. QUIC Transport Parameters Extension¶
8.3. Removing the EndOfEarlyData Message¶
8.4. Prohibit TLS Middlebox Compatibility Mode¶
9. Security Considerations¶
9.1. Session Linkability¶
9.2. Replay Attacks with 0-RTT¶
9.3. Packet Reflection Attack Mitigation¶
9.4. Header Protection Analysis¶
9.5. Header Protection Timing Side-Channels¶
9.6. Key Diversity¶
9.7. Randomness¶
11. References¶
11.1. Normative References¶
11.2. Informative References¶
Appendix A. Sample Packet Protection¶
A.1. Keys¶
A.2. Client Initial¶
A.3. Server Initial¶
A.4. Retry¶
A.5. ChaCha20-Poly1305 Short Header Packet¶
Appendix B. AEAD Algorithm Analysis¶
B.1. Analysis of AEAD_AES_128_GCM and AEAD_AES_256_GCM Usage Limits¶
B.1.1. Confidentiality Limit¶
B.1.2. Integrity Limit¶
B.2. Analysis of AEAD_AES_128_CCM Usage Limits¶
C.1. Since draft-ietf-quic-tls-32¶
C.2. Since draft-ietf-quic-tls-31¶
C.3. Since draft-ietf-quic-tls-30¶
C.4. Since draft-ietf-quic-tls-29¶
C.5. Since draft-ietf-quic-tls-28¶
C.6. Since draft-ietf-quic-tls-27¶
C.7. Since draft-ietf-quic-tls-26¶
C.8. Since draft-ietf-quic-tls-25¶
C.9. Since draft-ietf-quic-tls-24¶
C.10. Since draft-ietf-quic-tls-23¶
C.11. Since draft-ietf-quic-tls-22¶
C.12. Since draft-ietf-quic-tls-21¶
C.13. Since draft-ietf-quic-tls-20¶
C.14. Since draft-ietf-quic-tls-18¶
C.15. Since draft-ietf-quic-tls-17¶
C.16. Since draft-ietf-quic-tls-14¶
C.17. Since draft-ietf-quic-tls-13¶
C.18. Since draft-ietf-quic-tls-12¶
C.19. Since draft-ietf-quic-tls-11¶
C.20. Since draft-ietf-quic-tls-10¶
C.21. Since draft-ietf-quic-tls-09¶
C.22. Since draft-ietf-quic-tls-08¶
C.23. Since draft-ietf-quic-tls-07¶
C.24. Since draft-ietf-quic-tls-05¶
C.25. Since draft-ietf-quic-tls-04¶
C.26. Since draft-ietf-quic-tls-03¶
C.27. Since draft-ietf-quic-tls-02¶
C.28. Since draft-ietf-quic-tls-01¶
C.29. Since draft-ietf-quic-tls-00¶
C.30. Since draft-thomson-quic-tls-01¶
1. Overview¶
1.1. Document Structure¶
1.2. Terms and Definitions¶
1.3. Notational Conventions¶
2. Streams¶
2.1. Stream Types and Identifiers¶
2.2. Sending and Receiving Data¶
2.3. Stream Prioritization¶
2.4. Operations on Streams¶
3. Stream States¶
3.1. Sending Stream States¶
3.2. Receiving Stream States¶
3.3. Permitted Frame Types¶
3.4. Bidirectional Stream States¶
3.5. Solicited State Transitions¶
4. Flow Control¶
4.1. Data Flow Control¶
4.2. Increasing Flow Control Limits¶
4.3. Flow Control Performance¶
4.4. Handling Stream Cancellation¶
4.5. Stream Final Size¶
4.6. Controlling Concurrency¶
5. Connections¶
5.1. Connection ID¶
5.1.1. Issuing Connection IDs¶
5.1.2. Consuming and Retiring Connection IDs¶
5.2. Matching Packets to Connections¶
5.2.1. Client Packet Handling¶
5.2.2. Server Packet Handling¶
5.2.3. Considerations for Simple Load Balancers¶
5.3. Operations on Connections¶
6.1. Sending Version Negotiation Packets¶
6.2. Handling Version Negotiation Packets¶
6.2.1. Version Negotiation Between Draft Versions¶
6.3. Using Reserved Versions¶
7. Cryptographic and Transport Handshake¶
7.1. Example Handshake Flows¶
7.2. Negotiating Connection IDs¶
7.3. Authenticating Connection IDs¶
7.4. Transport Parameters¶
7.4.1. Values of Transport Parameters for 0-RTT¶
7.4.2. New Transport Parameters¶
7.5. Cryptographic Message Buffering¶
8. Address Validation¶
8.1. Address Validation During Connection Establishment¶
8.1.1. Token Construction¶
8.1.2. Address Validation using Retry Packets¶
8.1.3. Address Validation for Future Connections¶
8.1.4. Address Validation Token Integrity¶
8.2. Path Validation¶
8.2.1. Initiating Path Validation¶
8.2.2. Path Validation Responses¶
8.2.3. Successful Path Validation¶
8.2.4. Failed Path Validation¶
9. Connection Migration¶
9.1. Probing a New Path¶
9.2. Initiating Connection Migration¶
9.3. Responding to Connection Migration¶
9.3.1. Peer Address Spoofing¶
9.3.2. On-Path Address Spoofing¶
9.3.3. Off-Path Packet Forwarding¶
9.4. Loss Detection and Congestion Control¶
9.5. Privacy Implications of Connection Migration¶
9.6. Server's Preferred Address¶
9.6.1. Communicating a Preferred Address¶
9.6.2. Migration to a Preferred Address¶
9.6.3. Interaction of Client Migration and Preferred Address¶
9.7. Use of IPv6 Flow-Label and Migration¶
10. Connection Termination¶
10.1. Idle Timeout¶
10.1.1. Liveness Testing¶
10.1.2. Deferring Idle Timeout¶
10.2. Immediate Close¶
10.2.1. Closing Connection State¶
10.2.2. Draining Connection State¶
10.2.3. Immediate Close During the Handshake¶
10.3. Stateless Reset¶
10.3.1. Detecting a Stateless Reset¶
10.3.2. Calculating a Stateless Reset Token¶
10.3.3. Looping¶
11. Error Handling¶
11.1. Connection Errors¶
11.2. Stream Errors¶
12. Packets and Frames¶
12.1. Protected Packets¶
12.2. Coalescing Packets¶
12.3. Packet Numbers¶
12.4. Frames and Frame Types¶
12.5. Frames and Number Spaces¶
13. Packetization and Reliability¶
13.1. Packet Processing¶
13.2. Generating Acknowledgments¶
13.2.1. Sending ACK Frames¶
13.2.2. Acknowledgment Frequency¶
13.2.3. Managing ACK Ranges¶
13.2.4. Limiting Ranges by Tracking ACK Frames¶
13.2.5. Measuring and Reporting Host Delay¶
13.2.6. ACK Frames and Packet Protection¶
13.2.7. PADDING Frames Consume Congestion Window¶
13.3. Retransmission of Information¶
13.4. Explicit Congestion Notification¶
13.4.1. Reporting ECN Counts¶
13.4.2. ECN Validation¶
14. Datagram Size¶
14.1. Initial Datagram Size¶
14.2. Path Maximum Transmission Unit¶
14.2.1. Handling of ICMP Messages by PMTUD¶
14.3. Datagram Packetization Layer PMTU Discovery¶
14.3.1. DPLPMTUD and Initial Connectivity¶
14.3.2. Validating the Network Path with DPLPMTUD¶
14.3.3. Handling of ICMP Messages by DPLPMTUD¶
14.4. Sending QUIC PMTU Probes¶
14.4.1. PMTU Probes Containing Source Connection ID¶
15. Versions¶
16. Variable-Length Integer Encoding¶
17. Packet Formats¶
17.1. Packet Number Encoding and Decoding¶
17.2. Long Header Packets¶
17.2.1. Version Negotiation Packet¶
17.2.2. Initial Packet¶
17.2.3. 0-RTT¶
17.2.4. Handshake Packet¶
17.2.5. Retry Packet¶
17.3. Short Header Packets¶
17.3.1. 1-RTT Packet¶
17.4. Latency Spin Bit¶
18. Transport Parameter Encoding¶
18.1. Reserved Transport Parameters¶
18.2. Transport Parameter Definitions¶
19. Frame Types and Formats¶
19.1. PADDING Frames¶
19.2. PING Frames¶
19.3. ACK Frames¶
19.3.1. ACK Ranges¶
19.3.2. ECN Counts¶
19.4. RESET_STREAM Frames¶
19.5. STOP_SENDING Frames¶
19.6. CRYPTO Frames¶
19.7. NEW_TOKEN Frames¶
19.8. STREAM Frames¶
19.9. MAX_DATA Frames¶
19.10. MAX_STREAM_DATA Frames¶
19.11. MAX_STREAMS Frames¶
19.12. DATA_BLOCKED Frames¶
19.13. STREAM_DATA_BLOCKED Frames¶
19.14. STREAMS_BLOCKED Frames¶
19.15. NEW_CONNECTION_ID Frames¶
19.16. RETIRE_CONNECTION_ID Frames¶
19.17. PATH_CHALLENGE Frames¶
19.18. PATH_RESPONSE Frames¶
19.19. CONNECTION_CLOSE Frames¶
19.20. HANDSHAKE_DONE Frames¶
19.21. Extension Frames¶
20. Error Codes¶
20.1. Transport Error Codes¶
20.2. Application Protocol Error Codes¶
21. Security Considerations¶
21.1. Overview of Security Properties¶
21.1.1. Handshake¶
21.1.2. Protected Packets¶
21.1.3. Connection Migration¶
21.2. Handshake Denial of Service¶
21.3. Amplification Attack¶
21.4. Optimistic ACK Attack¶
21.5. Request Forgery Attacks¶
21.5.1. Control Options for Endpoints¶
21.5.2. Request Forgery with Client Initial Packets¶
21.5.3. Request Forgery with Preferred Addresses¶
21.5.4. Request Forgery with Spoofed Migration¶
21.5.5. Request Forgery with Version Negotiation¶
21.5.6. Generic Request Forgery Countermeasures¶
21.6. Slowloris Attacks¶
21.7. Stream Fragmentation and Reassembly Attacks¶
21.8. Stream Commitment Attack¶
21.9. Peer Denial of Service¶
21.10. Explicit Congestion Notification Attacks¶
21.11. Stateless Reset Oracle¶
21.12. Version Downgrade¶
21.13. Targeted Attacks by Routing¶
21.14. Traffic Analysis¶
22. IANA Considerations¶
22.1. Registration Policies for QUIC Registries¶
22.1.1. Provisional Registrations¶
22.1.2. Selecting Codepoints¶
22.1.3. Reclaiming Provisional Codepoints¶
22.1.4. Permanent Registrations¶
22.2. QUIC Versions Registry¶
22.3. QUIC Transport Parameter Registry¶
22.4. QUIC Frame Types Registry¶
22.5. QUIC Transport Error Codes Registry¶
23. References¶
23.1. Normative References¶
23.2. Informative References¶
Appendix A. Pseudocode¶
A.1. Sample Variable-Length Integer Decoding¶
A.2. Sample Packet Number Encoding Algorithm¶
A.3. Sample Packet Number Decoding Algorithm¶
A.4. Sample ECN Validation Algorithm¶
Appendix B. Change Log¶
B.1. Since draft-ietf-quic-transport-32¶
B.2. Since draft-ietf-quic-transport-31¶
B.3. Since draft-ietf-quic-transport-30¶
B.4. Since draft-ietf-quic-transport-29¶
B.5. Since draft-ietf-quic-transport-28¶
B.6. Since draft-ietf-quic-transport-27¶
B.7. Since draft-ietf-quic-transport-26¶
B.8. Since draft-ietf-quic-transport-25¶
B.9. Since draft-ietf-quic-transport-24¶
B.10. Since draft-ietf-quic-transport-23¶
B.11. Since draft-ietf-quic-transport-22¶
B.12. Since draft-ietf-quic-transport-21¶
B.13. Since draft-ietf-quic-transport-20¶
B.14. Since draft-ietf-quic-transport-19¶
B.15. Since draft-ietf-quic-transport-18¶
B.16. Since draft-ietf-quic-transport-17¶
B.17. Since draft-ietf-quic-transport-16¶
B.18. Since draft-ietf-quic-transport-15¶
B.19. Since draft-ietf-quic-transport-14¶
B.20. Since draft-ietf-quic-transport-13¶
B.21. Since draft-ietf-quic-transport-12¶
B.22. Since draft-ietf-quic-transport-11¶
B.23. Since draft-ietf-quic-transport-10¶
B.24. Since draft-ietf-quic-transport-09¶
B.25. Since draft-ietf-quic-transport-08¶
B.26. Since draft-ietf-quic-transport-07¶
B.27. Since draft-ietf-quic-transport-06¶
B.28. Since draft-ietf-quic-transport-05¶
B.29. Since draft-ietf-quic-transport-04¶
B.30. Since draft-ietf-quic-transport-03¶
B.31. Since draft-ietf-quic-transport-02¶
B.32. Since draft-ietf-quic-transport-01¶
B.33. Since draft-ietf-quic-transport-00¶
B.34. Since draft-hamilton-quic-transport-protocol-01¶
Contributors¶
The spin bit is an OPTIONAL feature of this version of QUIC. A QUIC stack that -chooses to support the spin bit MUST implement it as specified in this section.¶
The spin bit is an OPTIONAL feature of this version of QUIC. An endpoint that +does not support this feature MUST disable it, as defined below.¶
Each endpoint unilaterally decides if the spin bit is enabled or disabled for a connection. Implementations MUST allow administrators of clients and servers to disable the spin bit either globally or on a per-connection basis. Even when the @@ -8827,9 +8827,11 @@
A human-readable explanation for why the connection was closed. This can be -zero length if the sender chooses not to give details beyond the Error Code. -This SHOULD be a UTF-8 encoded string [RFC3629].¶
Additional diagnostic information for the closure. This can be zero length if +the sender chooses not to give details beyond the Error Code. This SHOULD be +a UTF-8 encoded string [RFC3629], though the frame does not carry +information, such as language tags, that would aid comprehension by any entity +other than the one that created the text.¶
View saved issues, or the latest GitHub issues and pull requests.