Age | Commit message (Collapse) | Author |
|
Cowlib now uses GitHub Actions for CI. As a result
of this change, Cowlib is tested against OTP-24+.
This commit adds initial implementations of
cow_http3, cow_http3_machine and cow_qpack.
Because QPACK is similar to HPACK, some encoding and
decoding functions were moved to a common include file,
particularly the huffman functions.
The cow_http module now contains the types and functions
common to all or most versions of HTTP. The types and
functions specific to HTTP/1 were moved to the new
cow_http1 module.
Because HTTP/3 is similar to HTTP/2, part of the code
processing headers is common and can be found in
cow_http. Other functions common to both versions
were moved out of cow_http2_machine.
This commit updates comments indicating that the HTTP/2
PRIORITY mechanism will no longer be implemented.
|
|
|
|
Table only needs to be resized if the current size exceeds the new
max size, regardless of current max size.
|
|
Correction to cow_hpack:encode/2,3 according to RFC 7541, 4.3. Entry
Eviction When Dynamic Table Size Changes.
This change also corrects the handling of inserting entries larger than
the max size, which shall result in an empty table, according to 4.4.
in the same RFC.
Fixes #101, #103.
|
|
When EOS is found within the string the decoding must fail.
When the final padding is > 7 bit in length the decoding must
fail as well.
|
|
There's no shift to be done for the first value.
|
|
|
|
|
|
|
|
This in turn leads to a small performance improvement.
|
|
|
|
|
|
|
|
|
|
This provides a small but noticeable improvement so it's
probably worth doing.
|
|
|
|
The previous naive implementation ended up not benefitting
from binary match context reuse because it was matching on
bit boundaries (and not bytes). This new implementation
matches a byte at a time.
The result is almost twice faster when decoding the examples
from the HPACK RFC (before/after):
cow_hpack:decode_huffman in 0.250666s
cow_hpack:decode_huffman in 0.133743s
|
|
|
|
|
|
|
|
The new entry size wasn't being added to the table size
after a prune.
Also fixes incorrect test cases. The size number was
different than the one found in RFC 7541 Appendix C.
|
|
|
|
See also https://github.com/erlang/otp/pull/883
|
|
|
|
No decoding options have been added in this commit. They will be
added in the future.
Only one encoding option has been added: #{huffman => boolean()}.
It allows to disable Huffman compression of strings. This compression
is enabled by default.
|