0
Fork 0
mirror of https://github.com/ninenines/cowboy.git synced 2025-07-14 04:10:24 +00:00
Small, fast, modern HTTP server for Erlang/OTP.
Find a file
Loïc Hoguin 073c481656
HTTP/1: Ensure active mode is enabled for the next stream
In rare cases it was possible for active mode to be disabled
when there were no streams pipelined. This resulted in the
dropping of the connection due to timeouts as no data could
be received.

We now enable active mode when necessary even if there are
no streams pipelined.

This was found while benchmarking and I have not been able
to extract a test case.
2025-02-05 14:30:25 +01:00
.github/workflows CI: Remove unneeded env 2024-11-08 12:54:26 +01:00
doc/src Implement dynamic socket buffer sizes 2025-02-05 14:29:58 +01:00
ebin Initial HTTP/3 implementation 2024-03-26 15:53:48 +01:00
examples Fix markdown example for OTP-27 2024-11-07 13:28:26 +01:00
src HTTP/1: Ensure active mode is enabled for the next stream 2025-02-05 14:30:25 +01:00
test Implement dynamic socket buffer sizes 2025-02-05 14:29:58 +01:00
.gitattributes Add ws_perf_SUITE to measure Websocket performance 2025-01-15 13:28:57 +01:00
.gitignore gitignore: add examples/ dependency files 2016-05-25 12:54:12 +02:00
CONTRIBUTING.asciidoc Update CONTRIBUTING.asciidoc 2024-11-15 11:16:45 +01:00
erlang.mk Update Erlang.mk 2024-11-06 16:33:39 +01:00
LICENSE Refresh copyright lines 2024-01-25 11:22:54 +01:00
Makefile Don't run perf suites by default 2025-02-05 14:30:25 +01:00
plugins.mk Document the commands based Websocket interface 2019-10-06 16:51:27 +02:00
README.asciidoc Update Discord link to a permanent invite 2024-11-27 12:10:12 +01:00
rebar.config Add WS compression test where only server sets client_max_window_bits 2025-01-23 11:39:48 +01: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.12/guide[User guide]
* https://ninenines.eu/docs/en/cowboy/2.12/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

* https://discord.gg/x25nNq2fFE[Discord server]
* https://github.com/ninenines/cowboy/issues[Issues tracker]
* https://ninenines.eu/services[Commercial Support]
* https://github.com/sponsors/essen[Sponsor me!]