-
-
Notifications
You must be signed in to change notification settings - Fork 175
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial HTTP/3 and QPACK implementation
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.
- Loading branch information
Showing
13 changed files
with
4,066 additions
and
1,026 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
## Use workflows from ninenines/ci.erlang.mk to test Cowlib. | ||
|
||
name: Check Cowlib | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
pull_request: | ||
schedule: | ||
## Every Monday at 2am. | ||
- cron: 0 2 * * 1 | ||
|
||
env: | ||
CI_ERLANG_MK: 1 | ||
|
||
jobs: | ||
cleanup-master: | ||
name: Cleanup master build | ||
runs-on: ubuntu-latest | ||
steps: | ||
|
||
- name: Cleanup master build if necessary | ||
if: ${{ github.event_name == 'schedule' }} | ||
run: | | ||
gh extension install actions/gh-actions-cache | ||
gh actions-cache delete Linux-X64-Erlang-master -R $REPO --confirm || true | ||
gh actions-cache delete macOS-X64-Erlang-master -R $REPO --confirm || true | ||
env: | ||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
REPO: ${{ github.repository }} | ||
|
||
check: | ||
name: Cowlib | ||
needs: cleanup-master | ||
uses: ninenines/ci.erlang.mk/.github/workflows/ci.yaml@master | ||
|
||
# The perfs tests are nice to run but typically not | ||
# important. So we run them after we are done with the other | ||
# test suites. At this point we know that Erlang was built | ||
# so we can just use the latest version. | ||
|
||
perfs: | ||
name: Run performance tests | ||
needs: check | ||
runs-on: 'ubuntu-latest' | ||
if: ${{ !cancelled() }} | ||
steps: | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Output latest Erlang/OTP version | ||
id: latest_version | ||
run: | | ||
{ | ||
echo "latest<<EOF" | ||
make ci-list | grep -v rc | grep -v master | tail -n1 | ||
echo EOF | ||
} >> "$GITHUB_OUTPUT" | ||
- name: Restore CI cache | ||
uses: actions/cache/restore@v4 | ||
with: | ||
path: | | ||
~/erlang/ | ||
key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ steps.latest_version.outputs.latest }} | ||
|
||
- name: Run perfs | ||
run: make perfs LATEST_ERLANG_OTP=1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,9 @@ | ||
{application, 'cowlib', [ | ||
{description, "Support library for manipulating Web protocols."}, | ||
{vsn, "2.13.0"}, | ||
{modules, ['cow_base64url','cow_cookie','cow_date','cow_hpack','cow_http','cow_http2','cow_http2_machine','cow_http_hd','cow_http_struct_hd','cow_http_te','cow_iolists','cow_link','cow_mimetypes','cow_multipart','cow_qs','cow_spdy','cow_sse','cow_uri','cow_uri_template','cow_ws']}, | ||
{modules, ['cow_base64url','cow_cookie','cow_date','cow_hpack','cow_http','cow_http1','cow_http2','cow_http2_machine','cow_http3','cow_http3_machine','cow_http_hd','cow_http_struct_hd','cow_http_te','cow_iolists','cow_link','cow_mimetypes','cow_multipart','cow_qpack','cow_qs','cow_spdy','cow_sse','cow_uri','cow_uri_template','cow_ws']}, | ||
{registered, []}, | ||
{applications, [kernel,stdlib,crypto]}, | ||
{optional_applications, []}, | ||
{env, []} | ||
]}. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Oops, something went wrong.