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

521 commits

Author SHA1 Message Date
Loïc Hoguin
1219837e91 Cleanup the .gitignore 2012-04-12 22:05:54 +02:00
Loïc Hoguin
4b27d3ec43 Use a separate rebar.config file for running tests 2012-04-12 22:04:58 +02:00
Ali Sabil
4b43d06384 Make charsets parsing more relaxed
Certain user agents send invalid Accept-Charset headers, like the
following: "ISO-8859-1;utf-8;q=0.7,*;q=0.7"

The user agent with which this behavior was observed presented itself
with the User-Agent string: "Mozilla/5.0 (Windows; U; Windows NT 5.1;
en-US; rv:1.9) Gecko/2008052906 Firefox/3.0" Although this doesn't
appear to be correct. The request might have been mangled by a
transparent proxy.
2012-04-08 11:51:51 +02:00
Loïc Hoguin
85ed79eb59 Merge branch 'adt-add-sockname' of https://github.com/Vagabond/cowboy 2012-04-06 22:58:12 +02:00
Loïc Hoguin
e8ee64777c Merge branch 'websocket-fragments' of https://github.com/klaar/cowboy 2012-04-06 22:18:09 +02:00
Andrew Thompson
06a2d636bc Add sockname/1 to the TCP and SSL transports 2012-04-06 13:24:02 -04:00
Magnus Klaar
80c67bff33 Update autobahn suite to use autobahntestsuite 2012-04-06 17:53:53 +02:00
Magnus Klaar
0b15ed914d Add support for fragmented websocket messages 2012-04-05 22:02:04 +02:00
Loïc Hoguin
95e05d822f Add chunked transfer encoding support and rework the body reading API
Introduces 3 low level functions and updates the existing higher
levels functions. The new primitives are has_body/1, body_length/1
and stream_body/1. In addition to that, a helper function
init_stream/4 has been added.

Streaming a body implies to decode the Transfer-Encoding and
Content-Encoding used for the body. By default, Cowboy will try
to figure out what was used and decode them properly. You can
override this if you want to disable this behavior or simply
support more encodings by calling the init_stream/4 function
before you start streaming the body.
2012-04-01 21:25:55 +02:00
Loïc Hoguin
ba75e8b8ae Merge branch 'log-proplist-req' 2012-04-01 17:58:04 +02:00
Magnus Klaar
5a7040ee1c Convert request to proplist when logging 2012-04-01 17:57:00 +02:00
Loïc Hoguin
4fb2a6face Merge branch 'add-ssl-ciphers-configuration' of https://github.com/tillitech/cowboy 2012-03-23 12:48:05 +01:00
Ali Sabil
0c2cb207b9 Update the edoc for cowboy_ssl_transport:listen/1 2012-03-23 07:32:44 +01:00
Loïc Hoguin
7b2793b344 Merge branch 'patch-1' of https://github.com/si14/cowboy 2012-03-23 01:55:30 +01:00
Dmitry Groshev
6e0b764e0a Fixing badmatch when browser closes connection earlier than file was fully sent 2012-03-22 18:48:15 +04:00
Ali Sabil
9ac784df3b Add support for specifying the ciphers for the SSL transport 2012-03-21 09:49:39 +01:00
Ali Sabil
98c58280f6 Simplify the options filtering code in cowboy_ssl_transport 2012-03-21 09:46:10 +01:00
Loïc Hoguin
7e74582432 Don't close requests when the replied body is chunked 2012-03-15 23:05:40 +01:00
Loïc Hoguin
8e2cc3d7f1 Add an 'onrequest' hook for HTTP
This new protocol option is a fun.

It expects a single arg, the Req, and should only return a possibly
modified Req. This can be used for many things like URL rewriting,
access logging or listener-wide authentication.

If a reply is sent inside the hook, then Cowboy will consider the
request handled and will move on to the next one.
2012-03-15 22:29:38 +01:00
Loïc Hoguin
36a6823e50 Do not send chunked Transfer-Encoding replies for HTTP/1.0
Fixes compatibility issue #140 reported by @majek.
2012-03-13 03:00:05 +01:00
Loïc Hoguin
e87f51e542 Merge branch 'content-type-accepted-asterisk-atom' of https://github.com/dysinger/cowboy
Added a comment explaining the '*' always matching.
2012-03-13 01:43:15 +01:00
Loïc Hoguin
133564d028 Merge branch 'fix/relax-media-type-parsing' of https://github.com/tillitech/cowboy 2012-03-12 22:57:47 +01:00
Loïc Hoguin
3885912d9b Rename inet:ip_port() to inet:port_number()
Thanks go to @superbobry for pointing it out.
2012-03-12 21:57:07 +01:00
Loïc Hoguin
5d46ad0e58 Merge branch 'cookie-expire-fix' of https://github.com/klaar/cowboy 2012-03-09 22:22:37 +01:00
Magnus Klaar
3376b7295e Fix issue #157 relating to daylight savings time. 2012-03-09 20:42:12 +01:00
Ali Sabil
32a46f898a Make media type parsing more relaxed
Certain user agents send slightly invalid media types, like the
following: "text/html, image/gif, image/jpeg, ; q=.2, */; q=.2"

The user agent with which this behavior was observed presented itself
with the User-Agent string: "Mozilla/5.0 (Macintosh; U; Intel Mac OS X
10.6; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (FlipboardProxy/0.0.5;
+http://flipboard.com/browserproxy)"
2012-03-09 12:13:30 +01:00
Tim Dysinger
21cd61cb38 If we have a mapping to '*' then use it as the default catch all accept 2012-03-08 03:17:55 -10:00
Loïc Hoguin
c6c2b31695 Merge branch 'rest-etag-fixes' of https://github.com/klaar/cowboy 2012-03-02 19:25:35 +01:00
Magnus Klaar
9922de6d9e Tests and fixes for the generate_etag/2 callback
The return value from the generate_etag/2 callback is expected to be a
binary tagged with either weak or strong. This binary is quoted, and
may be prefixed with W/ before it is set as the value of the ETag header
in the response.

For backwards compatibility with older handlers where the return value
was expected to be a quoted binary a function has been added to parse any
return values that are untagged binaries. All untagged binaries are expected
to be a valid value for the ETag header.
2012-02-29 22:32:37 +01:00
Loïc Hoguin
8f0a78f52f Add a roadmap 2012-02-27 09:54:16 +01:00
Loïc Hoguin
d9212c21dd Remove the redundant include/ from -include("http.hrl") 2012-02-27 08:07:03 +01:00
Loïc Hoguin
ac1424fd6a Remove a completed @todo comment 2012-02-27 08:06:27 +01:00
Loïc Hoguin
f7884475a5 Merge pull request #146 from ostinelli/f3de0869801d3909cc5a5d5dbee81941481a0c2e
Polish dialyzer warnings on supervisor init/1
2012-02-24 08:09:28 -08:00
Loïc Hoguin
5f5d410541 Add an empty ebin/ folder to fix a rebar/edoc issue
When missing rebar couldn't build docs because it expects the ebin/
folder to exist before it runs edoc. This commit allows users to
build docs without first having to run make.
2012-02-24 12:36:52 +01:00
Loïc Hoguin
a7264a1af3 Add cowboy_http:x_www_form_urlencoded/2
This was initially an internal function, it has been made public
due to popular demand as it can sometimes be needed.
2012-02-23 20:56:11 +01:00
Roberto Ostinelli
f3de086980 polished dialyzer warnings on supervisor init/1 specs 2012-02-20 21:25:19 -08:00
Loïc Hoguin
db382d4d39 Check for upgrades on accept timeout
Otherwise acceptors will not be upgraded properly until after the
next request comes in.

Thanks to DeadZen for pointing it out.
2012-02-20 09:31:22 +01:00
Loïc Hoguin
811d11a1a2 Merge branch 'ssl-password-cacert' of https://github.com/DeadZen/cowboy 2012-02-20 08:48:06 +01:00
Loïc Hoguin
9baf3e2ae9 Add an examples/ directory containing a link to cowboy_examples 2012-02-20 08:42:45 +01:00
Loïc Hoguin
f6cf731011 REST: Only send 201 when a new resource is created on POST 2012-02-20 08:33:54 +01:00
Loïc Hoguin
f51493ee37 Add 'Expect' header parsing
At the same time renaming cowboy_http:content_type_params/3 to
cowboy_http:params/2 (with a default Acc of []) as this code isn't
useful only for content types.
2012-02-20 08:25:05 +01:00
DeadZen
e67d839154 Add CA support and make SSL certificate password optional 2012-02-08 15:14:02 -05:00
David Kelly
e7b6e2a402 Added absoluteURI support
If requests go through a proxy, they will have the original uri in the
request, i.e. : GET http://proxy.server.uri/some/query/string  HTTP 1.1 ...

That was problematic -- cowboy_http_protocol:request didn't know what to
to with the result of decode_packet applied to this, which would be something
like:

``` erlang
{http_request,'GET',{absoluteURI,http,<<"proxy.server.uri">>,
	undefined,<<"/some/query/string">>},{1,1}}
```

So, I just ignore the host, grab the path and pass into

``` erlang
cowboy_http_protocol:request({http_request, Method, {abs_path, Path},
	Version}, State)
```

Seems to do the trick without much effort.
2012-02-02 20:25:23 +01:00
Loïc Hoguin
062db95653 Apply a trick to the erlang:hibernate calls to suppress dialyzer warnings
Initially recommended by Magnus Klaar, the trick is to add a catch
instruction before the erlang:hibernate/3 call so that Dialyzer
thinks it will return, followed by the expected return value
('ok' for HTTP, 'closed' for websockets).

This should be good enough until a real solution is found.
2012-02-02 20:04:06 +01:00
Loïc Hoguin
096f40bf08 Fix a typo that prevented protocol options upgrades 2012-02-01 19:04:26 +01:00
Loïc Hoguin
2c0c85cd2f Merge branch 'remove-queue-len-call' of https://github.com/puzza007/cowboy 2012-01-31 21:11:42 +01:00
Paul Oliver
697170b496 Remove call to queue:len/1
queue:len/1 is O(len(Q))
queue:out/1 is O(1) amortized, O(len(Q)) worst case

Replace with a pattern match
2012-01-31 19:29:56 +00:00
Loïc Hoguin
0c3cf802b4 Removing travis-ci from the cowboy development toolkit
We've been having many recurring issues, some which were fixed,
only to have other things broken again. Can't rely on a service
that breaks all the time.
2012-01-31 12:39:05 +01:00
Loïc Hoguin
9823450cc3 Merge branch 'autobahn-suite' of https://github.com/klaar/cowboy
This needs python2 to be the default python in /usr/bin/python.
2012-01-31 12:17:29 +01:00
Loïc Hoguin
21802d2767 Use queue() for managing wait queues in cowboy_listener
The previous solution was retrieving the last put connection
and wasn't a real queue, so this solution should improve the
overall latency under load.
2012-01-31 09:45:44 +01:00