aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2013-01-22Merge branch 'master' of https://github.com/0x00F6/cowboyLoïc Hoguin
2013-01-22Make cowboy_static use universal time0x00F6
2013-01-22Do not require inets for running tests anymoreLoïc Hoguin
2013-01-22Replace terminate/2 with terminate/3, adding a ReasonLoïc Hoguin
This should have been done a *long* time ago, back when I initially added Websocket support. This is the first part of two in improving loop handler support with regards to socket closure. Reason may include: {normal, shutdown} for the most normal shutdown, {normal, timeout} for a loop handler timeout shutdown, or {error, _} if an error occured.
2013-01-22Fix cowboy_websocket_handler callback specLoïc Hoguin
2013-01-21Merge pull request #369 from rramsden/patch-1Loïc Hoguin
Fix typo in the guide introduction
2013-01-21Improve keepalive testsLoïc Hoguin
2013-01-20Fix an issue for replies in onresponse mishandling headersLoïc Hoguin
Reported and fixed over email by Adrian Roe.
2013-01-20First draft done for the request object guide chapterLoïc Hoguin
2013-01-20Add missing clause to cowboy_req:has_resp_body/1Loïc Hoguin
2013-01-19More request object documentation in the guideLoïc Hoguin
2013-01-19Make cowboy_req:has_body/1 return boolean()Loïc Hoguin
This makes it similar to the other has_* functions.
2013-01-18Document the static handler in the guideLoïc Hoguin
2013-01-18Finish up the Internals chapterLoïc Hoguin
2013-01-18Document loop handlers in the guideLoïc Hoguin
2013-01-18Remove a few old @todo commentsLoïc Hoguin
2013-01-18Set max_keepalive default to 100 instead of infinityLoïc Hoguin
2013-01-18Beginning of request object chapter in the guideLoïc Hoguin
2013-01-18Add plain HTTP handlers documentation to the guideLoïc Hoguin
2013-01-18Finish the routing chapter of the guideLoïc Hoguin
Note that this is the new routing not yet available in master. The code should follow in a few days.
2013-01-18Fix capitalize_hook exampleLoïc Hoguin
2013-01-17Fix typo in the guide introductionRichard Ramsden
2013-01-18Add hooks documentation to the guideLoïc Hoguin
2013-01-18Do not use tabulations in the guideLoïc Hoguin
2013-01-18Explain how to write custom protocol upgrades in the guideLoïc Hoguin
2013-01-17Get the basics of Websocket covered in the guideLoïc Hoguin
2013-01-17Add cowboy_bstr:capitalize_token/1Loïc Hoguin
For optional header name capitalization. See the guide section about it.
2013-01-17Add cowboy_websocket:close_code/0Loïc Hoguin
Also fixes a warning.
2013-01-17Add recursive dependency fetching to the MakefileLoïc Hoguin
Also small other changes like how we build the PLT.
2013-01-14Add Sec-Websocket-Protocol header parsingLoïc Hoguin
2013-01-14Improve websocket close handlingLoïc Hoguin
We now always send a failure reason (bad protocol, bad encoding, etc.) unless the closure was initiated by the client and it didn't send a close code. We now check that the close frames have a payload that is valid UTF-8, unless they don't have a payload at all. We now do not crash the process anymore when bad opcodes are sent, or when the opcode 0 is sent before fragmentation was initiated. Overall this makes us closer to full compliance with the RFC.
2013-01-13Websocket text frames are now checked for UTF-8 correctnessLoïc Hoguin
The autobahntestsuite now passes 100% of the tests. We are getting close to fully implementing the Websocket RFC.
2013-01-12Unmask websocket frames on the fly and optimize the codeLoïc Hoguin
No change in functionality, but this will allow us to validate that text frames are utf8 without having to receive the frame entirely.
2013-01-12All frames sent from client to server MUST be maskedLoïc Hoguin
Good in theory, but implementations may vary. If something stops working after this commit we might need some tweaks to support existing clients. Please try it and give feedback.
2013-01-11Fix getting started example, missing envLoïc Hoguin
2013-01-10Remove support for Websocket hixie76 draftLoïc Hoguin
It was only used by Safari 5.0.1 and possibly 5.1. Their market share is dropping as we speak. It was also insecure (disabled in Firefox for that reason). This will allow us to make much more efficient and cleaner code for the rest of the Websocket versions we support (drafts 7 to 17 + RFC), which are pretty much all versions seen in the wild excluding the one we're removing here.
2013-01-10Update autobahntestsuite to 0.5.2Loïc Hoguin
Also small mostly insignificant changes to tests.
2013-01-07Add optional automatic response body compressionLoïc Hoguin
This behavior can be enabled with the `compress` protocol option. See the `compress_response` example for more details. All tests are now ran with and without compression for both HTTP and HTTPS.
2013-01-06Add protection against slowloris vulnerabilityLoïc Hoguin
This changes the behavior of the `timeout` protocol option to mean "Time in which the full request line and headers must be received". The default of 5s should be fine for all normal uses. This change has no noticeable impact on performance and is thus enabled by default for everyone. It can be disabled by setting `timeout` to `infinity` although that is definitely not encouraged. Inspired by the contribution from @naryl on github.
2013-01-06Merge pull request #359 from unix1/masterLoïc Hoguin
Fix examples to follow new env tuple standard
2013-01-05Fix examples to follow new env tuple standardUnix1
This brings examples in line with the recent Middleware change.
2013-01-05Add cowboy_req:set_resp_body_fun/2Loïc Hoguin
This allows streaming a body without knowing the length in advance. Also allows {stream, StreamFun} response body in the REST code.
2013-01-05Fix a small warning in eunit_SUITELoïc Hoguin
2013-01-05Remove cowboy_req:transport/1Loïc Hoguin
It was added to help with response body streaming functions. But it was a clumsy solution that we discarded in favor of passing socket and transport to said function. It was also very odd compared to the rest of the cowboy_req interface. If you used this function before, worry not, here's its proper equivalent. [Socket, Transport] = cowboy_req:get([socket, transport], Req)
2013-01-05Change the response body streaming fun interfaceLoïc Hoguin
Before we were required to get the socket and transport ourselves, now they're passed to the function.
2013-01-05Stop using rebar in the MakefileLoïc Hoguin
First and foremost: yes, you can still use Cowboy as a rebar dependency. This commit only removes the use of rebar when *developing* Cowboy, not when *using* Cowboy. Over the past two years I went from very happy with rebar to unsatisfied and most recently found it counter productive in many ways, from having insane default configuration to various unefficient operations. The earlier reversal from 'rebar ct' to 'ct_run' made my workflow much more natural, as I always needed to look at 'logs/raw.log' to find out what was wrong, anyway. Why not let 'ct_run' output it directly instead? Removing rebar made my life easier. If you wonder why I don't patch rebar, there's two reasons. First is that the direction taken by rebar isn't compatible with my views, and this would be a huge fight to steer it in another direction. I got other, more important fights to make. Second is that I'd rather patch OTP so that everyone benefits from it, not just users of rebar. Anyway this isn't my personal blog so I will stop babbling here. There's a few important things to note relative to this commit: * You don't need rebar to work on Cowboy anymore * The eunit tests are now ran through common_test Ping me if it doesn't work out for you.
2013-01-04Use erl -eval instead of rebar for generating edoc documentationLoïc Hoguin
2013-01-04Use ct_run instead of rebar ct for running ct testsLoïc Hoguin
Small tweak to the autobahn test file, we look for the python2 executable now. It'll make my life easier.
2013-01-04Hello 2013Loïc Hoguin
2013-01-03Add middleware supportLoïc Hoguin
Middlewares allow customizing the request processing. All existing Cowboy project are incompatible with this commit. You need to change `{dispatch, Dispatch}` in the protocol options to `{env, [{dispatch, Dispatch}]}` to fix your code.