0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 12:20:24 +00:00
Small, fast, modern HTTP server for Erlang/OTP.
Find a file
Loïc Hoguin 83bd8bc935
Fix two edge cases for cowboy_req:stream_body
Sending data of size 0 with the fin flag set resulted in nothing
being sent to the client and still considering the response to
be finished for HTTP/1.1.

For both HTTP/1.1 and HTTP/2, the final chunk of body that is
sent automatically by Cowboy at the end of a response that the
user did not properly terminate was not passing through stream
handlers. This resulted in issues like compression being incorrect.

Some tests still fail under 20.1.3. They are due to recent zlib
changes and should be fixed in a future patch release. Unfortunately
it does not seem to be any 20.1 version that is safe to use for
Cowboy, although some will work better than others.
2017-11-01 15:33:10 +00:00
doc/src Add cowboy_req:inform/2,3 2017-10-29 21:03:04 +00:00
ebin Add cowboy_tracer_h stream handler 2017-10-27 17:18:28 +01:00
examples Remove broken links from examples README 2017-08-09 09:47:56 +02:00
src Fix two edge cases for cowboy_req:stream_body 2017-11-01 15:33:10 +00:00
test Fix two edge cases for cowboy_req:stream_body 2017-11-01 15:33:10 +00:00
.gitattributes Convert the documentation to Asciidoc 2016-01-14 13:37:20 +01:00
.gitignore gitignore: add examples/ dependency files 2016-05-25 12:54:12 +02:00
CONTRIBUTING.asciidoc Update CONTRIBUTING 2015-11-16 18:55:53 +01:00
erlang.mk Update Erlang.mk 2017-07-14 21:44:39 +02:00
LICENSE Welcome to 2017 2017-01-02 19:36:36 +01:00
Makefile Add OTP-20.1.2 to CI 2017-10-13 23:21:27 +02:00
plugins.mk Allow passing options to sub protocols 2017-02-18 18:26:20 +01:00
README.asciidoc Make a few link use https 2017-10-03 18:05:23 +02:00
rebar.config Update version, CI and Cowlib dependency version 2017-10-03 17:10:16 +02:00

= Cowboy

Cowboy is a small, fast and modern HTTP server for Erlang/OTP.

== Goals

Cowboy aims to provide a *complete* HTTP stack in a *small* code base.
It is optimized for *low latency* and *low memory usage*, in part
because it uses *binary strings*.

Cowboy provides *routing* capabilities, selectively dispatching requests
to handlers written in Erlang.

Because it uses Ranch for managing connections, Cowboy can easily be
*embedded* in any other application.

Cowboy is *clean* and *well tested* Erlang code.

== Online documentation

* https://ninenines.eu/docs/en/cowboy/2.0/guide[User guide]
* https://ninenines.eu/docs/en/cowboy/2.0/manual[Function reference]

== Offline documentation

* While still online, run `make docs`
* User guide available in `doc/` in PDF and HTML formats
* Function reference man pages available in `doc/man3/` and `doc/man7/`
* Run `make install-docs` to install man pages on your system
* Full documentation in Asciidoc available in `doc/src/`
* Examples available in `examples/`

== Getting help

* Official IRC Channel: #ninenines on irc.freenode.net
* https://github.com/ninenines/cowboy/issues[Issues tracker]
* https://ninenines.eu/services[Commercial Support]