Draft: draft-ietf-masque-h3-datagram

Commentary: As per h3 rules , it 's fine to send capsules without a setting . The setting is about the semantics of datagrams . Also remove the requirement to send the datagram transport parameter because we now have capsules . 
 I 'm a bit confused about this one with the removal of the requirement . What purpose does the setting have now ? Is it " I 'm an endpoint that supports both   frame and DATAGRAM capsule " ? If so , using settings does n't seem to gel well with the possible change of capsules to be conveyed in the datastream rather than in a CAPSULE frame . 
 Discussed offline and clarified . This spec defines the format of DATAGRAM frame or capsule . The SETTING helps articulate how the endpoint intends to consume things it receives . This might raise some interesting questions if someone tries to define a new formation the future . But they 'll have to solve the problem they 've made for themselves . This is fine as it is . 
 In section 6 , it says " A value of 0 indicates that this mechanism is not supported . " The draft actually has two mechanisms : the DATAGRAM frame and the CAPSULE frame . It would be useful to clarify that the parameter only refers to support for the DATAGRAM frame .
Implementations of HTTP/3 that support this mechanism can indicate
that to their peer by sending the H3_DATAGRAM SETTINGS parameter with
a value of 1.  The value of the H3_DATAGRAM SETTINGS parameter MUST
be either 0 or 1.  A value of 0 indicates that this mechanism is not
supported.  An endpoint that receives the H3_DATAGRAM SETTINGS
parameter with a value that is neither 0 or 1 MUST terminate the
connection with error H3_SETTINGS_ERROR.
An endpoint that sends the H3_DATAGRAM SETTINGS parameter with a
value of 1 MUST send the max_datagram_frame_size QUIC Transport
Parameter DGRAM.  An endpoint that receives the H3_DATAGRAM SETTINGS
parameter with a value of 1 on a QUIC connection that did not also
receive the max_datagram_frame_size QUIC Transport Parameter MUST
terminate the connection with error H3_SETTINGS_ERROR.
Endpoints MUST NOT send QUIC DATAGRAM frames nor HTTP/3 CAPSULE
frames until they have both sent and received the H3_DATAGRAM
SETTINGS parameter with a value of 1.
When clients use 0-RTT, they MAY store the value of the server's
H3_DATAGRAM SETTINGS parameter.  Doing so allows the client to send
QUIC DATAGRAM frames and HTTP/3 CAPSULE frames in 0-RTT packets.
When servers decide to accept 0-RTT data, they MUST send a
H3_DATAGRAM SETTINGS parameter greater than or equal to the value
they sent to the client in the connection where they sent them the
NewSessionTicket message.  If a client stores the value of the
H3_DATAGRAM SETTINGS parameter with their 0-RTT state, they MUST
validate that the new value of the H3_DATAGRAM SETTINGS parameter
sent by the server in the handshake is greater than or equal to the
stored value; if not, the client MUST terminate the connection with
error H3_SETTINGS_ERROR.  In all cases, the maximum permitted value
of the H3_DATAGRAM SETTINGS parameter is 1.
Implementations of HTTP/3 that support HTTP Datagrams can indicate
that to their peer by sending the H3_DATAGRAM SETTINGS parameter with
a value of 1.  The value of the H3_DATAGRAM SETTINGS parameter MUST
be either 0 or 1.  A value of 0 indicates that HTTP Datagrams are not
supported.  An endpoint that receives the H3_DATAGRAM SETTINGS
parameter with a value that is neither 0 or 1 MUST terminate the
connection with error H3_SETTINGS_ERROR.
Endpoints MUST NOT send QUIC DATAGRAM frames nor DATAGRAM capsules
until they have both sent and received the H3_DATAGRAM SETTINGS
parameter with a value of 1.
When clients use 0-RTT, they MAY store the value of the server's
H3_DATAGRAM SETTINGS parameter.  Doing so allows the client to send
QUIC DATAGRAM frames and Datagram capsules in 0-RTT packets.  When
servers decide to accept 0-RTT data, they MUST send a H3_DATAGRAM
SETTINGS parameter greater than or equal to the value they sent to
the client in the connection where they sent them the
NewSessionTicket message.  If a client stores the value of the
H3_DATAGRAM SETTINGS parameter with their 0-RTT state, they MUST
validate that the new value of the H3_DATAGRAM SETTINGS parameter
sent by the server in the handshake is greater than or equal to the
stored value; if not, the client MUST terminate the connection with
error H3_SETTINGS_ERROR.  In all cases, the maximum permitted value
of the H3_DATAGRAM SETTINGS parameter is 1.