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.
|
|
|
|
|
|
|
|
|
|
Since a draft for a revision was introduced the tests have
started covering additions that we don't currently support.
|
|
|
|
OTP fixed a bug that leads to the bad spec no longer compiling.
Fix is expected to land in OTP-26.0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Loïc: amended to add RFC5861 examples to the tests.
|
|
In particular we now ignore unknown authentication parameters.
Loïc: Small cleanup edits in amend.
|
|
|
|
I have in the process changed the output a little with
regard to parameters. The dictionaries also build as
a list of key-values now to keep ordering. This should
be the definitive interface.
|
|
|
|
|
|
|
|
New function set_last_streamid/1 sets the last accepted stream ID
to the last known remote stream ID. Frames with a remote stream ID
greater than this are thereafter discarded by frame/2, which returns
{ok, Http2Machine} for such frames.
|
|
|
|
|
|
This Erlang.mk includes the experimental Hex.pm support
for publishing releases and other related things.
|
|
We must not remove all domain attributes when we find an
empty domain attribute, we must only ignore this one particular
cookie-av. (RFC6265bis 5.3.3)
|
|
LH: I've updated the code to include enable_connect_protocol
conditionally depending on the endpoint.
|
|
And explain that browsers may be more strict over TCP vs TLS.
|
|
They are currently optional to avoid doing a breaking change
but should become mandatory (perhaps with a default value of
undefined) in Cowlib 3.0.
|
|
|
|
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.
|
|
Chromium and Firefox have both begun using "Lax" as the
default for non-Secure cookies.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
Also do minor fixes to cow_cookie:parse_cookie/1. There
is a potential incompatibility from these changes, because
now a header "Cookie: foo" will be translated to a cookie
with an empty name and value "foo", instead of cookie name
"foo" and empty value. Also cookie names starting with $
are no longer ignored.
These fixes are necessary for the cookies test suite from
Web platform tests to work, and match the upcoming cookie
RFC.
|
|
The error was appropriate for server mode, but not for client
mode, because the server does not send the preface sequence.
|
|
|
|
|
|
|
|
There's no shift to be done for the first value.
|