aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2014-12-31Remove an extraneous empty lineLoïc Hoguin
2014-12-29Add cow_http_hd:parse_x_forwarded_for/1Loïc Hoguin
From thin air.
2014-12-29Add cow_http_hd:parse_host/1, remove cow_http:parse_fullhost/1Loïc Hoguin
From RFC7230 and RFC3986. The new function now validates that the characters are correct, but does not go as far as validate segment sizes or number of segments. Its main purpose is still to split host and port.
2014-12-28Add cow_http_hd:parse_pragma/1Loïc Hoguin
We go for an exact <<"no-cache">> match because this is the only directive that was ever defined, because the header is only kept for backward compatible reasons with HTTP/1.0 caches, and because for all other uses the cache-control header is preferred.
2014-12-28Add a test for cow_http_hd:parse_content_length/1Loïc Hoguin
Negative number.
2014-12-28Add cow_http_hd:parse_content_range/1Loïc Hoguin
From RFC7233.
2014-12-27Add cow_http_hd:parse_range/1Loïc Hoguin
From RFC7233.
2014-12-26Add cow_http_hd:parse_if_range/1Loïc Hoguin
From RFC7233.
2014-12-26Add cow_http_hd:parse_accept_ranges/1Loïc Hoguin
From RFC7233.
2014-12-26Fix a parse_max_forwards testLoïc Hoguin
2014-12-26Add cow_http_hd:parse_retry_after/1Loïc Hoguin
From RFC7231.
2014-12-26Add specs to cow_date:parse_date/1Loïc Hoguin
2014-12-26Improve internal cow_http_hd function token_ci_list/2Loïc Hoguin
We now ensure that the tokens are made of token characters only.
2014-12-26Add cow_http_hd:parse_allow/1Loïc Hoguin
From RFC7231.
2014-12-26Add cow_http_hd:parse_age/1Loïc Hoguin
From RFC7234.
2014-12-26Add cow_http_hd:parse_vary/1Loïc Hoguin
From RFC7231.
2014-12-26Fix a parse_upgrade testLoïc Hoguin
2014-12-26Add missing export for second previous commitLoïc Hoguin
2014-12-26Simplify the code for parsing 1*DIGIT header valuesLoïc Hoguin
Follow-up from the change that ensured we don't get any extra whitespace following the value. We can now call binary_to_integer/1 which is more efficient.
2014-12-25Add cow_http_hd:parse_sec_websocket_version_resp/1Loïc Hoguin
From RFC6455. Ho ho ho!
2014-12-24Add cow_http_hd:parse_sec_websocket_protocol_resp/1Loïc Hoguin
From RFC6455.
2014-12-24Use _req instead of _client for request-specific parsersLoïc Hoguin
2014-12-24Add dummy functions for Sec-WebSocket-(Accept|Key) headersLoïc Hoguin
From RFC6455. These base64 values are expected to be matched directly in the first case, or hashed to generate a new base64 value, therefore no parsing or validation is required.
2014-12-24Fix a variable shadow issue in the testsLoïc Hoguin
2014-12-24Add cow_http_hd:parse_te/1Loïc Hoguin
From RFC7230.
2014-12-21Do not attempt to skip whitespace after single value headersLoïc Hoguin
We now expect Cowboy or any other application to remove it before calling the header parse function.
2014-12-21Add cow_http_hd:parse_cache_control/1Loïc Hoguin
From RFC7234.
2014-12-20Speed up the two slowest properties in cow_http_hdLoïc Hoguin
We limit input to 50 items maximum.
2014-12-20Use choose/2 and elements/1 where appropriate instead of oneof/1Loïc Hoguin
2014-12-20Add cow_http_hd:parse_trailer/1Loïc Hoguin
From RFC7230.
2014-12-20Simplify generators for language rangesLoïc Hoguin
2014-12-20Speed up a few properties by limiting parameters inputLoïc Hoguin
2014-12-20Add cow_http_hd:parse_content_language/1Loïc Hoguin
From RFC7231 and RFC5646. The ABNF for language tags is terrible. It makes parsing efficiently a big challenge and the result is this huge ugly set of functions. Thankfully triq allows us to make sure the implementation is correct. A large number of examples has also been extracted from both RFCs. The various ?IS_ALPHA(C), ?IS_TOKEN(C) and so on have received a change: they now use 'orelse' instead of ';'. This is because in this new code we need to check more than one character per clause. The compilation time for this module increased dramatically. Apparently happens because the guards are too big. Using ranges ($a =< C =< $z) instead of the current solution makes compilation much faster, but the function executes twice as slow which is not acceptable.
2014-12-19Add cow_http_hd:parse_content_encoding/1Loïc Hoguin
From RFC7231.
2014-12-18Improve cow_http_hd:parse_max_forwards/1 specLoïc Hoguin
2014-12-18Add cow_http_hd:parse_sec_websocket_extensions/1Loïc Hoguin
From RFC6455. This function is about 3 times faster than the current Cowboy code.
2014-12-18Add cow_http_hd:parse_sec_websocket_protocol_client/1Loïc Hoguin
2014-12-18Add cow_http_hd:parse_sec_websocket_version_client/1Loïc Hoguin
From RFC6455. The code is slower than a plain binary_to_integer(Version), because it enforces that the value is in the 0..255 range as per the specification, and that the input binary is no longer than 3 characters. It is however better to enforce this because the client could also send a huge integer and we don't really want to convert it and waste resources.
2014-12-18Add cow_http_hd:parse_expires/1Loïc Hoguin
From RFC7234.
2014-12-18Rename a local cow_http_hd function for better precisionLoïc Hoguin
2014-12-18Add cow_http_hd:parse_etag/1Loïc Hoguin
From RFC7232.
2014-12-18Add cow_http_hd:parse_if_none_match/1Loïc Hoguin
From RFC7232.
2014-12-18Add cow_http_hd:parse_if_match/1Loïc Hoguin
From RFC7232. Nearly twice as fast as current Cowboy code.
2014-12-17Add test cases taken from RFC7230Loïc Hoguin
2014-12-17Add cow_http_hd:parse_upgrade/1Loïc Hoguin
From RFC7230. Compared to the current Cowboy implementation we added support for protocol-version. We return protocol-name/protocol-version as a single binary as these will typically be matched directly.
2014-12-17Add cow_date:parse_date/1 and move date parsing code thereLoïc Hoguin
2014-12-16Add cow_http_hd:parse_last_modified/1Loïc Hoguin
From RFC7232.
2014-12-16Add cow_http_hd:parse_date/1Loïc Hoguin
From RFC7231.
2014-12-16Add cow_http_hd:parse_if_unmodified_since/1Loïc Hoguin
2014-12-16Add cow_http_hd:parse_if_modified_since/1Loïc Hoguin
From RFC7231 and RFC7232. The new code is faster than the one in Cowboy: 2 times faster for fixdate format, 2.5 times faster for rfc850 format and 3+ times faster for asctime format. Unlike previous code, there is no parsing speed difference between the 3 different date formats.