0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00
Commit graph

48 commits

Author SHA1 Message Date
Loïc Hoguin
8cb9d242b0
Initial HTTP/3 implementation
This includes Websocket over HTTP/3.

Since quicer, which provides the QUIC implementation,
is a NIF, Cowboy cannot depend directly on it. In order
to enable QUIC and HTTP/3, users have to set the
COWBOY_QUICER environment variable:

  export COWBOY_QUICER=1

In order to run the test suites, the same must be done
for Gun:

  export GUN_QUICER=1

HTTP/3 support is currently not available on Windows
due to compilation issues of quicer which have yet to
be looked at or resolved.

HTTP/3 support is also unavailable on the upcoming
OTP-27 due to compilation errors in quicer dependencies.
Once resolved HTTP/3 should work on OTP-27.

Because of how QUIC currently works, it's possible
that streams that get reset after sending a response
do not receive that response. The test suite was
modified to accomodate for that. A future extension
to QUIC will allow us to gracefully reset streams.

This also updates Erlang.mk.
2024-03-26 15:53:48 +01:00
Loïc Hoguin
f7956a0f44
Update erlang.mk 2024-03-14 12:59:05 +01:00
Loïc Hoguin
d64ac25e92
Use GitHub actions for testing Cowboy
Now tested against OTP-24+.
Erlang.mk has been updated as well.
2023-12-01 10:00:33 +01:00
Loïc Hoguin
30ee75cea1
Update Erlang.mk 2022-09-19 14:17:37 +02:00
Loïc Hoguin
04ca4c5d31
Cowboy 2.9.0 2021-05-12 10:24:40 +02:00
Loïc Hoguin
c47f1e5fb8
Update Erlang.mk 2020-10-07 13:44:24 +02:00
Loïc Hoguin
27d10cf597
Update Erlang.mk 2020-03-29 15:45:51 +02:00
Loïc Hoguin
3b173fd42c
Update erlang.mk 2018-09-12 15:00:48 +02:00
Loïc Hoguin
aee40d5bb5
Update Erlang.mk 2018-08-13 08:38:49 +02:00
Loïc Hoguin
15ed6df51a
Update Erlang.mk
Includes an experimental change to avoid deleting kerl
unnecessarily and/or incorrectly.
2018-05-22 17:48:34 +02:00
Loïc Hoguin
4e896fabd5
Update Erlang.mk 2018-05-20 12:17:32 +02:00
Loïc Hoguin
474cb359ce
Update erlang.mk and rebar.config 2018-05-16 12:28:55 +02:00
Loïc Hoguin
e2dcc39e12
Update Erlang.mk 2018-05-02 18:23:03 +02:00
Loïc Hoguin
344cec95b4
Add AUTO_CI_WINDOWS variable 2017-11-19 13:25:54 +01:00
Loïc Hoguin
404ad037a1
Update Erlang.mk 2017-07-14 21:44:39 +02:00
Loïc Hoguin
fac882164c
Update Erlang.mk 2017-01-02 19:28:48 +01:00
Loïc Hoguin
f57dd51e0f
Update Erlang.mk 2016-12-02 19:23:19 +01:00
Loïc Hoguin
faca7866ed
Partially update manual for the cowboy_req
Only the access functions have been modified so far.
2016-11-05 14:17:30 +02:00
Loïc Hoguin
b370442a63 Initial commit with connection/streams
Breaking changes with previous commit. This is a very large change,
and I am giving up on making a single commit that fixes everything.
More commits will follow slowly adding back features, introducing
new tests and fixing the documentation.

This change contains most of the work toward unifying the interface
for handling both HTTP/1.1 and HTTP/2. HTTP/1.1 connections are now
no longer 1 process per connection; instead by default 1 process per
request is also created. This has a number of pros and cons.

Because it has cons, we also allow users to use a lower-level API
that acts on "streams" (requests/responses) directly at the connection
process-level. If performance is a concern, one can always write a
stream handler. The performance in this case will be even greater
than with Cowboy 1, although all the special handlers are unavailable.

When switching to Websocket, after the handler returns from init/2,
Cowboy stops the stream and the Websocket protocol takes over the
connection process. Websocket then calls websocket_init/2 for any
additional initialization such as timers, because the process is
different in init/2 and websocket_*/* functions. This however would
allow us to use websocket_init/2 for sending messages on connect,
instead of sending ourselves a message and be subject to races.
Note that websocket_init/2 is optional.

This is all a big change and while most of the tests pass, some
functionality currently doesn't. SPDY is broken and will be removed
soon in favor of HTTP/2. Automatic compression is currently disabled.
The cowboy_req interface probably still have a few functions that
need to be updated. The docs and examples do not refer the current
functionality anymore.

Everything will be fixed over time. Feedback is more than welcome.
Open a ticket!
2016-03-05 20:20:42 +01:00
Loïc Hoguin
6deac75ea4 Update Erlang.mk 2016-01-15 14:56:00 +01:00
Loïc Hoguin
8fd7364517 Try an experimental Erlang.mk CI feature 2016-01-15 14:44:26 +01:00
Loïc Hoguin
e84e06d8f9 Update CI 2016-01-15 13:48:35 +01:00
Loïc Hoguin
4023e7f4e4 Convert the documentation to Asciidoc
A few small revisions were made, and Erlang.mk has been updated.
2016-01-14 13:37:20 +01:00
Loïc Hoguin
837cf8b9ce Update Erlang.mk 2015-11-16 23:08:38 +01:00
Loïc Hoguin
889601751d Fix ci-prepare when OTP builds exist 2015-07-21 21:23:41 +02:00
Loïc Hoguin
70e49fd619 Don't ignore failure when doing 'make ci'
The best way to use 'make ci' is 'make -k ci', then it
will complete its run even if a version fails, and still
exit with an error code.
2015-07-21 21:07:04 +02:00
Loïc Hoguin
12a4cc5947 Add caching of OTP builds for CircleCI
Unfortunately not seeing how I can try it other than committing
the file... Oh well, polluting the logs!
2015-07-21 18:21:20 +02:00
Loïc Hoguin
190f698990 Update erlang.mk and remove .app.src
Everything is now directly generated from the Makefile.
Also properly update dependencies.
2015-07-21 17:16:11 +02:00
Loïc Hoguin
a6f75aa3dc Add HTTP/2 support preview
This commit is not only an early preview of HTTP/2, it is an
early preview of the new Cowboy architecture that will be
presented tomorrow in my talk. If you have found it before
the talk, great! It's not complete so you better go watch
the talk anyway.
2015-06-11 17:04:21 +02:00
Loïc Hoguin
228cebaf04 Add rfc7230 test suite and update others to recent Gun
This is a large commit.

The rfc7230 test suite adds many tests from the RFC7230 document.

Gun has been updated quite a bit recently, which broke the Cowboy
suites. This is now fixed with this commit.

A new hook onfirstrequest has been added. It was very useful during
debugging of the test suites.

The initial process code has changed a little; more changes are
expected with the switch to maps for options.
2015-05-05 19:59:37 +03:00
Loïc Hoguin
903f6f4c7d Update erlang.mk 2014-11-07 14:25:34 +02:00
Loïc Hoguin
5756b10d5f Update erlang.mk 2014-10-04 15:52:41 +03:00
Loïc Hoguin
5cf9ac25e5 Update links extend -> ninenines 2014-08-02 12:38:15 +02:00
Loïc Hoguin
62de3a62f9 Update to erlang.mk 1.0.0 2014-08-01 14:26:51 +02:00
Loïc Hoguin
078d686a0a Provide installable man pages
make docs: generate Markdown and man pages in doc/
make install-docs: install man pages to be usable directly

Docs are generated from the ezdoc files in doc/src/.
2014-07-06 13:10:35 +02:00
Loïc Hoguin
abcc6e96d8 Update erlang.mk and update paths to start the release
Fixes a couple invalid instructions at the same time.
2014-06-30 10:14:05 +02:00
Loïc Hoguin
86db9e1ee4 Update erlang.mk 2014-03-24 14:06:11 +01:00
Loïc Hoguin
0ec713fc4b Now testing on R15B01+ and maint and master git branches 2013-12-29 14:57:01 +01:00
Loïc Hoguin
72ef4ef2f7 Update erlang.mk again 2013-12-02 15:52:29 +01:00
Loïc Hoguin
893e612b61 Update erlang.mk 2013-12-02 12:15:20 +01:00
Loïc Hoguin
fae1ec4128 Update erlang.mk 2013-11-14 15:31:45 +01:00
Loïc Hoguin
4769412daa erlang.mk now has built-in support for relx 2013-10-14 16:05:19 +02:00
Loïc Hoguin
7ff9a306d6 Update erlang.mk 2013-08-31 16:22:35 +02:00
Loïc Hoguin
ac6c460169 Update erlang.mk 2013-08-24 20:20:58 +02:00
Loïc Hoguin
47396211cf Update erlang.mk 2013-06-19 16:35:51 +02:00
Loïc Hoguin
517a31086b Change some module calls to local function calls 2013-05-15 14:46:24 +02:00
Loïc Hoguin
6e33274c85 Update Ranch to 0.8.2 and use ct_helper for testing SSL 2013-05-01 18:30:00 +02:00
Loïc Hoguin
ed2efbc4a1 Spin-off erlang.mk as a separate project 2013-05-01 00:34:22 +02:00