doh2: multiplexing DATA frames from multiple streams

HTTP/2 can multiplex streams inside a single connection. If all the following conditions are met, one query won't be answered, even though it is a valid situation from HTTP/2 perspective.

  • we have a large enough query to be split between multiple DATA frames (unlikely)
  • we use POST
  • the client sends two queries at the same time, interleaving their streams (probably quite unlikely)

Then, the frames on the connection could look as following:

HEADERS1 DATA1_1 HEADERS2 DATA2 DATA1_2

This is explicitly not supported, as it would require multiple session buffers for a single connection. All queries sent over POST must be serialized, e.g.:

HEADERS1 DATA1_1 DATA1_2 HEADERS2 DATA2

This does not affect GET, since all data is sent inside a HEADERS frame.

Edited by Tomas Krizek
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information