Skip to content

Commit 09761e2

Browse files
committed
Martin's feedback on SETTINGS_ACK removal
1 parent fca495b commit 09761e2

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

draft-ietf-quic-http.md

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -554,10 +554,9 @@ Different values for the same parameter can be advertised by each peer. For
554554
example, a client might permit a very large HPACK state table while a server
555555
chooses to use a small one to conserve memory.
556556

557-
Parameters are processed in the order in which they appear, and the value of a
558-
SETTINGS parameter is the last value that is seen by a receiver. The receiver of
559-
a SETTINGS frame does not need to maintain any state other than the last value
560-
of a given parameter.
557+
Parameters MUST NOT occur more than once. A receiver MAY treat the presence of
558+
the same parameter more than once as a connection error of type
559+
HTTP_MALFORMED_SETTINGS.
561560

562561
The SETTINGS frame defines no flags.
563562

@@ -577,12 +576,12 @@ value.
577576
{: #fig-ext-settings title="SETTINGS value format"}
578577

579578
A zero-length content indicates that the setting value is a Boolean and true.
580-
(False is indicated by the absence of the setting.)
579+
False is indicated by the absence of the setting.
581580

582581
Non-zero-length values MUST be compared against the remaining length of the
583582
SETTINGS frame. Any value which purports to cross the end of the frame MUST
584583
cause the SETTINGS frame to be considered malformed and trigger a connection
585-
error.
584+
error of type HTTP_MALFORMED_SETTINGS.
586585

587586
An implementation MUST ignore the contents for any SETTINGS identifier it does
588587
not understand.
@@ -638,6 +637,28 @@ each HTTP/2 SETTINGS parameter is mapped:
638637
SETTINGS_MAX_HEADER_LIST_SIZE:
639638
: An integer with a maximum value of 2^32 - 1.
640639

640+
#### Usage in 0-RTT
641+
642+
When a 0-RTT QUIC connection is being used, the client's initial requests will
643+
be sent before the arrival of the server's SETTINGS frame. Clients SHOULD
644+
cache at least the following settings about servers:
645+
646+
- SETTINGS_HEADER_TABLE_SIZE
647+
- SETTINGS_MAX_HEADER_LIST_SIZE
648+
649+
Clients MUST comply with cached settings until the server's current settings are
650+
received. If a client does not have cached values, it MAY assume the following
651+
values:
652+
653+
- SETTINGS_HEADER_TABLE_SIZE: 4,096 octets
654+
- SETTINGS_MAX_HEADER_LIST_SIZE: 16,384 octets
655+
656+
Servers MAY continue processing data from clients which conform to these
657+
defaults during the initial flight, even if the client behavior exceeds its
658+
current configuration. If the connection is closed because these or other
659+
constraints were violated during the 0-RTT flight, clients MAY retry using the
660+
settings sent by the server on the closed connection.
661+
641662
### PUSH_PROMISE {#frame-push-promise}
642663

643664
The PUSH_PROMISE frame (type=0x05) is used to carry a request header set from

0 commit comments

Comments
 (0)