aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2013-11-08Merge branch 'dsucher-better-routes-without-start-slash-error'Loïc Hoguin
2013-11-08Clarify error msg for route lacking starting slashDanielle Sucher
2013-11-08Add a workaround to disable chunked transfer-encodingAdrian Roe
This is an undocumented workaround to disable chunks when using HTTP/1.1. It can be used when the client advertises itself as HTTP/1.1 despite not understanding the chunked transfer-encoding. Usage can be found looking at the test for it. When activated, Cowboy will still advertise itself as HTTP/1.1, but will send the body the same way it would if it was HTTP/1.0.
2013-11-08Optimize query string parsingLoïc Hoguin
* Parsing code was moved to cowlib: cowboy_qs:parse_qs/1 * A function was added to build query strings: cowboy_qs:qs/1 * Also added cowboy_qs:urlencode/1 and cowboy_qsurldecode/1
2013-11-02Review, improve and document the static files handlerLoïc Hoguin
Changes include: * Much simplified route configuration. * Etag generation is now enabled by default. * Web mimetypes are now detected by default. A bigger list of mimetypes can be detected without any additional library. * Mimetypes can no longer be specified as a list. Copying this list for new connections is too costy. You can easily convert it into a function and pass that function to the handler instead. * You can however specify a single hardcoded mimetype. Mostly useful when serving a single file, like an index.html file, to avoid extra operations. * Specifying a path as a list of tokens is not possible anymore. Use either a binary or a string. * Using a private directory will not work if the application was not started properly. Cowboy will not attempt to find the location of this directory if the VM doesn't know it, as this caused issues in some setups. * Overall the code has been much simplified and clarified, and of course has now been documented.
2013-10-23Move cookie parsing/building code to cowlibLoïc Hoguin
The code for parsing has also been rewritten to be more efficient and to be able to handle cookie values with space inside them properly. Update cowlib to 0.2.0.
2013-09-07Implement recv timeout for SPDYLoïc Hoguin
2013-09-04Make cowlib a proper dependencyLoïc Hoguin
Start moving a few functions from Cowboy into cowlib.
2013-09-04More SPDY code readability improvementsLoïc Hoguin
2013-09-04Fix a badmatch issue when calling which_children on SPDY processLoïc Hoguin
2013-09-04Simplify the SPDY code by adding child management functionsLoïc Hoguin
2013-09-02Fix specs for SPDYLoïc Hoguin
2013-09-02Merge branch 'ipv6-literal' of git://github.com/yamt/cowboyLoïc Hoguin
2013-09-02Add request body support for SPDYLoïc Hoguin
And various other improvements following the addition of two tests. New dependency cowlib that will gradually receive most of the parse code from SPDY but also HTTP and its headers.
2013-09-03make cowboy_client:request() allow to override Host headerYAMAMOTO Takashi
this will be used by tests
2013-09-03add unit test for cowboy_protocol:parse_host/1YAMAMOTO Takashi
2013-09-03cowboy_protocol: accept host using ipv6 literalYAMAMOTO Takashi
2013-08-27Merge branch 'fix-ws-atom-responses' of git://github.com/seriyps/cowboyLoïc Hoguin
2013-08-27Merge branch 'websocket-compressed-metadata' of git://github.com/irccloud/cowboyLoïc Hoguin
2013-08-24Crash on failure, don't report errorsLoïc Hoguin
When something went wrong in a handler we used to report errors and then terminate the process normally. This doesn't work so well with links which won't detect failure. Now we still catch the error, but throw another one with more details on why it happened, including the Req object information and the stacktrace. Ranch will then print an error message with all this information. Because we crash directly, this also means that we will not hog resources unnecessarily for too long when something bad happens.
2013-08-24Simpler code for sending errors following crashesLoïc Hoguin
2013-08-15add websocket_compress metadataRJ
2013-08-13Allow atom responses in websocket handlers #563Sergey Prokhorov
2013-07-18Slight docs fix in cowboy_req.erlpmyarchon
2013-07-12Merge branch 'fix/websocket-inflate-unmask' of git://github.com/soundrop/cowboyLoïc Hoguin
2013-07-08Use the proper typespec for the websocket_deflate_frame rsv bitsAli Sabil
2013-07-05Fix decoding of chunked body.James Fish
Previously cowboy_http:te_chunked/2 would enter an incorrect state if it tried to parse an incomplete chunk when the length was known from the partial chunk. Previosuly cowboy_http:te_chunked/2 expected the trailing "\r\n" to always be present if chunk body was present in the buffer. This is not guaranteed and so this commit accommodates that situation.
2013-07-02Fix handling of websocket fragmented deflated framesAli Sabil
2013-07-02Fix websocket unmasking when compression is enabledAli Sabil
The unmasking logic was based on the length of inflated data instead of the length of the deflated data. This meant data would get corrupted when we receive a websocket frame split across multiple TCP packets.
2013-07-02Fix coding style in websocket_deflate_frame/3Ali Sabil
2013-07-02Remove usage of the inflate bufferAli Sabil
2013-06-27Remove unknown keys from .app.src fileLoïc Hoguin
2013-06-20Fix compilation < R16B010.8.6Loïc Hoguin
2013-06-20Update to 0.8.6Loïc Hoguin
2013-06-20Ignore deprecation warning for crypto:sha/1 for nowLoïc Hoguin
We can change this call when we start supporting only R16B+, which may happen when R17B is released or some time before.
2013-06-20Add support for the webkit deflate frame extensionAli Sabil
2013-06-10Avoid crashing in cowboy_req on invalid Accept-Encoding headerAli Sabil
Certain clients send malformed Accept-Encoding headers, which causes cowboy_req to crash is compression is enabled.
2013-06-08Merge branch 'dont_overwrite_stacktrace' of git://github.com/urbanserj/cowboyLoïc Hoguin
2013-06-07Merge branch 'read_with_utc' of git://github.com/narma/cowboyLoïc Hoguin
2013-06-07Don't overwrite stacktrace in `cowboy_rest:error_terminate/2`Sergey Urbanovich
This stacktrace is very useful in the `onresponse` hook. For example: ```erlang internal_error_hook(500, Headers, <<>>, Req) -> StackTrace = erlang:get_stacktrace(), Headers0 = [{N, V} || {N, V} <- Headers, N =/= <<"content-length">>], Body = io_lib:format("~p", [StackTrace]), {ok, Req0} = cowboy_req:reply(500, Headers0, Body, Req), Req0; internal_error_hook(Status, Headers, Body, Req) -> {ok, Req0} = cowboy_req:reply(Status, Headers, Body, Req), Req0. ```
2013-06-07Merge branch 'types' of git://github.com/lavrin/cowboyLoïc Hoguin
2013-06-07Merge branch 'spdy-zero-length-header-names' of git://github.com/bgentry/cowboyLoïc Hoguin
2013-06-07Use read_file_info/2 with {time, universal} optionSergey Rublev
2013-06-05Fix a couple control_frame clauses that were too largeLoïc Hoguin
2013-06-03Add sendfile support to SPDY, enabling cowboy_static useLoïc Hoguin
2013-06-02Fix cowboy:start_http/https/spdy typespecsRadosław Szymczyszyn
2013-05-31zero-length header names MUST issue a stream errorBlake Gentry
2013-05-31Don't crash on empty Cookie headerLoïc Hoguin
It's not allowed, however a heavily deployed client (Flash player) can send such an empty header, therefore we make a special condition for it and return an empty list when it happens.
2013-05-31In content-types, the charset parameter is converted to lowercaseLoïc Hoguin
We know this specific parameter is case insensitive so we automatically lowercase it to make things simpler to the developer.
2013-05-31Merge branch 'rest_method' of git://github.com/dvv/cowboyLoïc Hoguin