aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2012-03-13Do not send chunked Transfer-Encoding replies for HTTP/1.0Loïc Hoguin
Fixes compatibility issue #140 reported by @majek.
2012-03-13Merge branch 'content-type-accepted-asterisk-atom' of ↵Loïc Hoguin
https://github.com/dysinger/cowboy Added a comment explaining the '*' always matching.
2012-03-12Merge branch 'fix/relax-media-type-parsing' of ↵Loïc Hoguin
https://github.com/tillitech/cowboy
2012-03-12Rename inet:ip_port() to inet:port_number()Loïc Hoguin
Thanks go to @superbobry for pointing it out.
2012-03-09Fix issue #157 relating to daylight savings time.Magnus Klaar
2012-03-09Make media type parsing more relaxedAli Sabil
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-08If we have a mapping to '*' then use it as the default catch all acceptTim Dysinger
2012-02-29Tests and fixes for the generate_etag/2 callbackMagnus Klaar
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-27Remove the redundant include/ from -include("http.hrl")Loïc Hoguin
2012-02-27Remove a completed @todo commentLoïc Hoguin
2012-02-24Merge pull request #146 from ostinelli/f3de0869801d3909cc5a5d5dbee81941481a0c2eLoïc Hoguin
Polish dialyzer warnings on supervisor init/1
2012-02-23Add cowboy_http:x_www_form_urlencoded/2Loïc Hoguin
This was initially an internal function, it has been made public due to popular demand as it can sometimes be needed.
2012-02-20polished dialyzer warnings on supervisor init/1 specsRoberto Ostinelli
2012-02-20Check for upgrades on accept timeoutLoïc Hoguin
Otherwise acceptors will not be upgraded properly until after the next request comes in. Thanks to DeadZen for pointing it out.
2012-02-20Merge branch 'ssl-password-cacert' of https://github.com/DeadZen/cowboyLoïc Hoguin
2012-02-20REST: Only send 201 when a new resource is created on POSTLoïc Hoguin
2012-02-20Add 'Expect' header parsingLoïc Hoguin
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-08Add CA support and make SSL certificate password optionalDeadZen
2012-02-02Added absoluteURI supportDavid Kelly
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-02Apply a trick to the erlang:hibernate calls to suppress dialyzer warningsLoïc Hoguin
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-01Fix a typo that prevented protocol options upgradesLoïc Hoguin
2012-01-31Remove call to queue:len/1Paul Oliver
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-31Use queue() for managing wait queues in cowboy_listenerLoïc Hoguin
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-31Refactor cowboy_listener for more consistencyLoïc Hoguin
2012-01-31Add cowboy:get_protocol_options/1 and cowboy_set_protocol_options/2Loïc Hoguin
This allows any application to upgrade the protocol options without having to restart the listener. This is most useful to update the dispatch list of HTTP servers, for example. The upgrade is done at the acceptor level, meaning only new connections receive the new protocol options.
2012-01-30Move max_connections check directly inside cowboy_listenerLoïc Hoguin
This is a big change in the internal cowboy API. This should not have any impact on existing applications as only the acceptor is expected to use these API calls. The function cowboy_listener:wait/3 has been removed. max_connections checking now occurs directly in cowboy_listener:add_connection/3. If the pool is full and the acceptor has to wait, then it doesn't return, waiting for a free space to be available. To accomodate these changes, it is now cowboy_listener that will inform the new connection that it is ready by sending {shoot, self()}. This should be a great improvement to the latency of responses as there is one less message to wait for before the request process can do its work. Overall the performance under heavy load should also be improved as we greatly reduce the number of messages sent between the acceptor and the listener process.
2012-01-26Handle delete better when no delete_resource function is implementedTom Burdick
2012-01-23Fix a case where request body wouldn't get cleaned up on keepaliveLoïc Hoguin
The body was still in the buffer that's being used for the next request and was thus used as a request, causing errors.
2012-01-23Rename the type http_status/0 to cowboy_http:status/0Loïc Hoguin
2012-01-23Rename the type http_header/0 to cowboy_http:header/0Loïc Hoguin
At the same time rename http_headers/0 to cowboy_http:headers/0.
2012-01-23Rename the type http_version/0 to cowboy_http:version/0Loïc Hoguin
2012-01-23Rename the type http_uri/0 to cowboy_http:uri/0Loïc Hoguin
2012-01-23Rename the type http_method/0 to cowboy_http:method/0Loïc Hoguin
Exported types are much better than include files.
2012-01-23Fix typespecs for calendar:datetime/0 in cowboy_http_staticLoïc Hoguin
2012-01-23Add {halt, Req, State} return value to most REST callbacksLoïc Hoguin
Excluding generate_etag, last_modified, expires and variances.
2012-01-23Rename a lot of HandlerState2 variables to HandlerStateLoïc Hoguin
2012-01-23Improve the return value for cowboy_http_rest:upgrade/4Loïc Hoguin
2012-01-23Merge branch 'multipart' of https://github.com/nox/cowboyLoïc Hoguin
Conflicts: src/cowboy_http_req.erl test/http_SUITE.erl
2012-01-23Add multipart supportAnthony Ramine
2012-01-12Welcome to new developments with 0.5.0Loïc Hoguin
2012-01-09Update version to 0.4.00.4.0Loïc Hoguin
2012-01-09Make REST handlers' put_resource accept true or false return valuesLoïc Hoguin
Followup to 0bb23f2400ed0b65834913c8522a978d986f1f92. As discussed in #119.
2012-01-07Add etag option to cowboy_http_static handler.Magnus Klaar
2012-01-06Make REST handlers' process_post accept true or false return valuesLoïc Hoguin
They should return true when it has been processed successfully, or false otherwise, in which case a 500 error is sent. Fixes #119.
2012-01-06Fix handler crashes handlingLoïc Hoguin
We try to send a 500 error only if we didn't send the response headers yet. If they were, then we have no way to be sure the response was fully sent, nor should we assume anything about how this will be handled client-side, so we do nothing more and in both cases close the connection.
2012-01-06Move the ensure_response call before ensure_body_processedLoïc Hoguin
We want to reply as soon as possible.
2012-01-05Add test and doc for content types function.Magnus Klaar
2012-01-04inet_address:parse/1 does not accept binaries as an input, only stringsYurii Rashkovskii
2012-01-03Merge branch 'static-handler-split' of https://github.com/klaar/cowboyLoïc Hoguin
2012-01-03Add note on async threads to cowboy_http_static.Magnus Klaar