aboutsummaryrefslogtreecommitdiffstats
path: root/src/cow_http_hd.erl
AgeCommit message (Collapse)Author
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.
2014-12-16Add a property for cow_http_hd:parse_transfer_encoding/1Loïc Hoguin
2014-12-16Remove an unused test functionLoïc Hoguin
2014-12-16Add property for cow_http_hd:parse_max_forwards/1Loïc Hoguin
2014-12-16Add property for cow_http_hd:parse_expect/1Loïc Hoguin
2014-12-16Add a property for cow_http_hd:parse_connection/1Loïc Hoguin
2014-12-16Fix a shadow var warning in a propertyLoïc Hoguin
2014-12-15Add a property for cow_http_hd:parse_accept_language/1Loïc Hoguin
2014-12-15Add a property for cow_http_hd:parse_accept_encoding/1Loïc Hoguin
2014-12-15Add a property for cow_http_hd:parse_accept_charset/1Loïc Hoguin
2014-12-15Add a property for cow_http_hd:parse_accept/1Loïc Hoguin
Also fixes a few bugs uncovered by the property, and also allow empty Accept values as per RFC7231.
2014-12-14Add cow_http_hd:parse_content_type/1Loïc Hoguin
From RFC7231. This implementation is about 4 times faster than the one currently found in Cowboy.
2014-12-14Add a property for parse_content_length/1Loïc Hoguin
2014-12-13Add testing for bad input for cow_http_hd:parse_content_length/1Loïc Hoguin
2014-12-13Add cow_http_hd:parse_accept_language/1Loïc Hoguin
From RFC7231. This code is more than twice faster as the current Cowboy code, while filtering out more bad cases.
2014-12-13Add cow_http_hd:parse_accept_encoding/1Loïc Hoguin
From RFC7231.
2014-12-13Add cow_http_hd:parse_charset/1Loïc Hoguin
From RFC7231. This code is more than twice faster as the current Cowboy code, while filtering out more bad cases.
2014-12-13Add cow_http_hd:parse_accept/1Loïc Hoguin
From RFC7231. This code is more than twice faster as the current Cowboy code, while filtering out more bad cases.
2014-12-12Add cow_http_hd:parse_max_forwards/1Loïc Hoguin
From RFC7231.
2014-12-12Add cow_http_hd:parse_expect/1Loïc Hoguin
From RFC7231.
2014-02-27Add cow_http_hd:parse_{connection,content_length,transfer_encoding}/1Loïc Hoguin
Initially imported from Cowboy, then optimized.