0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-15 12:40:25 +00:00
Commit graph

175 commits

Author SHA1 Message Date
Loïc Hoguin
8f9051519e
Cowboy 2.11 2024-01-23 15:29:41 +01:00
Loïc Hoguin
3e145af9b9
Getting started must include relx in deps 2024-01-23 14:08:06 +01:00
Loïc Hoguin
427a276ef2
Update the guide with range requests support
Also update the list of headers cowboy_rest might set
and tweak a small number of other items.
2024-01-23 13:15:55 +01:00
Loïc Hoguin
e4a78aaeb1
Document body reading in auto mode
It is now tested both via cowboy_req:read_body and
via cowboy_req:cast.

Removes a bad example from the guide of body reading
with period of infinity, which does not work.
2024-01-08 15:13:18 +01:00
Loïc Hoguin
fd9711d949
Rework and improve the decompress stream handler
The read buffer was changed into an iovec to avoid doing
too many binary concatenations and allocations.

Decompression happens transparently: when decoding gzip,
the content-encoding header is removed (we only decode
when "gzip" is the only encoding so nothing remains).

We always add a content_decoded key to the Req object.
This key contains a list of codings that were decoded,
in the reverse order in which they were. Currently it
can only be empty or contain <<"gzip">> but future
improvements or user handlers may see it contain more
values.

The option to disable decompression was renamed to
decompress_enabled and defaults to true.

It is no longer possible to enable/disable decompression
in the middle of reading the body: this ensures that the
data we pass forward is always valid.

Various smaller improvements were made to the code,
tests and manual pages.
2024-01-04 15:50:12 +01:00
jdamanalo
3ed1b24dd6
Add cowboy_decompress_h stream handler 2023-12-21 15:39:08 +01:00
jdamanalo
a81dc8af9d
Add timeout to cowboy_loop
LH: I have added a test that does both hibernate and timeout
    and fixed a related issue. I also tweaked the docs and tests.
2023-12-15 15:37:34 +01:00
Loïc Hoguin
6bc6100bbd
Fix position of rate_limited/2 callback in REST workflow guide 2023-12-07 16:11:50 +01:00
Loïc Hoguin
32594a5199
Fix Websocket subprotocol example 2023-12-07 14:17:13 +01:00
Kian-Meng, Ang
b12b4300ba
Fix typos in documentation 2023-12-06 18:46:56 +01:00
Loïc Hoguin
22adc4de51
Fix Ranch link in user guide 2023-05-02 11:20:02 +02:00
Loïc Hoguin
9e600f6c1d
Cowboy 2.10.0 2023-04-28 10:41:18 +02:00
Loïc Hoguin
04ca4c5d31
Cowboy 2.9.0 2021-05-12 10:24:40 +02:00
Loïc Hoguin
136e74fc51
Two more HTTP specs 2021-04-24 16:31:29 +02:00
Thomas Sciaroni
70d393caad
Minor grammar corrections
Verb agreement error "The request process executes
middlewares which, by default, including the router
and then the execution of handlers." -> "The request
process executes middlewares. By default, the request
process executes the router and then the handlers."

Adverbial clause at beginning of sentence needs comma
"By default Cowboy comes..." -> "By default, Cowboy comes..."
2020-08-19 14:37:50 +02:00
Loïc Hoguin
5aac00d60c
Tweak a sentence in the guide
Thanks Tamir Halperin for pointing this out.

[skip ci]
2020-07-01 13:55:58 +02:00
Loïc Hoguin
8d5628c5f1
Cowboy 2.8.0 2020-05-21 19:02:12 +02:00
Loïc Hoguin
78b23ddfa5
Clarify the routing algorithm 2020-05-20 10:53:52 +02:00
Loïc Hoguin
f8e94c3315
Add more specifications 2020-03-29 13:22:06 +02:00
Loïc Hoguin
2ea1313763
Add Trace Context to the list of specs 2020-02-08 15:32:46 +01:00
Loïc Hoguin
3ec0cd8b8d
Clarify modifying/adding to the Req object 2020-02-08 15:32:46 +01:00
Loïc Hoguin
5e0be061bb
Add a skeleton performance chapter to the guide 2020-01-06 14:04:25 +01:00
Loïc Hoguin
db0d6f8d25
Use active,N
This reduces the number of times we need to ask for more packets,
and as a result we get a fairly large boost in performance,
especially with HTTP/1.1.

Unfortunately this makes Cowboy require at least Erlang/OTP 21.3+
because the ssl application did not have active,N. For simplicity
the version required will be Erlang/OTP 22+.

In addition this change improves hibernate handling in
cowboy_websocket. Hibernate will now work for HTTP/2 transport
as well, and stray or unrelated messages will no longer cancel
hibernate (the process will handle the message and go back into
hibernation).

Thanks go to Stressgrid for benchmarking an early version of this
commit: https://stressgrid.com/blog/cowboy_performance_part_2/
2020-01-06 12:58:14 +01:00
Loïc Hoguin
e81cd6328b
Add new RFCs to the list 2019-12-31 11:04:42 +01:00
Loïc Hoguin
525eeeecc9
Cowboy 2.7.0 2019-10-10 16:15:51 +02:00
Loïc Hoguin
d52e84bdd9
Add shutdown_reason Websocket command
This allows changing the normal exit reason of Websocket
processes, providing a way to signal other processes of
why the exit occurred.
2019-10-10 11:33:35 +02:00
Loïc Hoguin
cc54c207e3
Implement flow control for HTTP/1.1
We now stop reading from the socket unless asked to,
when we reach the request body. The option
initial_stream_flow_size controls how much data
we read without being asked, as an optimization.
We may also have received additional data along
with the request headers.

This commit also reworks the timeout handling for HTTP/1.1
because the stray timeout message was easily reproducible
after implementing the flow control. The issue should be
gone for good this time.
2019-10-09 20:54:33 +02:00
Loïc Hoguin
0c4103984b
Add migration guide for Cowboy 2.7 2019-10-07 17:48:45 +02:00
Loïc Hoguin
b350180503
Add new stream handlers to the guide
Also link from the guide to manual pages.
2019-10-07 14:06:37 +02:00
Loïc Hoguin
3977f2b96f
Document the commands based Websocket interface
The old interface with ok|reply|stop tuples is deprecated.
2019-10-06 16:51:27 +02:00
Loïc Hoguin
2b38526351
Fix PUT when resource doesn't exist in flowchart
This required moving around a lot of things so hopefully I
did not add errors while doing so. Only time will tell.

Also add the 415 that can result from content_types_accepted.
2019-10-06 12:48:35 +02:00
Loïc Hoguin
618c001291
Fix REST flowchart around 201 response for PUT
When the method is PUT we do not check the location header.
2019-10-05 11:39:53 +02:00
Loïc Hoguin
99df823cc3
Document stopping the listener in App:stop/1 2019-10-03 10:09:35 +02:00
Loïc Hoguin
cf84f59d9b
Add persistent_term support to the router 2019-09-28 15:40:41 +02:00
Alastair Hole
bbf36a2ac0
Minor grammar correction
Noun 'setup' -> verb phrase 'set up'
2019-09-05 17:15:13 +02:00
Loïc Hoguin
5829f1b9ac
Add more related specs 2019-07-22 10:41:04 +02:00
Loïc Hoguin
504c7c55f7
Add two related specs 2019-07-12 10:46:49 +02:00
Loïc Hoguin
dfeec3b74a
Add two new RFCs to the list 2019-05-27 13:43:01 +02:00
Loïc Hoguin
8875b07b37
Add RFC 8586 2019-04-24 20:24:23 +02:00
Loïc Hoguin
d846827b2a
Cowboy 2.6.3 2019-04-05 11:09:55 +02:00
Loïc Hoguin
d5489b4c73
Cowboy 2.6.2
Updates Cowlib to 2.7.2.
2019-04-04 11:23:50 +02:00
Loïc Hoguin
21d267a44a
Describe what star represent in the REST flowcharts 2019-04-03 14:08:53 +02:00
Ginetom
cd9b04792c
Clarify what the private directory is 2019-04-03 13:48:57 +02:00
Loïc Hoguin
9edfef34b2
Add this year's April Fool's RFC 2019-04-02 11:03:55 +02:00
Loïc Hoguin
459fc959b4
Add a related RFC 2019-03-25 20:27:20 +01:00
Loïc Hoguin
e0254cdcb0
Cowboy 2.6.1 2018-11-28 12:15:17 +01:00
Loïc Hoguin
6cc3b0ccca
Document cowboy_stream_h/cowboy_compress_h 2018-11-18 23:03:30 +01:00
Loïc Hoguin
8d6d78575f
Add the chunked option for HTTP/1.1
It allows disabling the chunked transfer-encoding. It
can also be disabled on a per-request basis, although
it will be ignored for responses that are not streamed.
2018-11-18 13:25:12 +01:00
Loïc Hoguin
417032a445
Prepare the Cowboy 2.6 release 2018-11-17 13:36:14 +01:00
Loïc Hoguin
dba17fdddb
Document using undefined as content_types_provided callback
This is a convention that indicates the callback will never
be called, for example because the methods HEAD or GET are
not accepted.
2018-11-14 18:04:32 +01:00