Cliff Frey
0e8ad4e003
reduce size of http_parser object from 104 to 84 bytes by only tracking one field size
...
This does have some slight functional changes in cases where
MAX_FIELD_SIZE is hit, specficially if a URL is made up of many
components, each of which is smaller than MAX_FIELD_SIZE, but the
total together is greater than MAX_FIELD_SIZE, then we now might not
call callbacks for any of the components (even the ones that are
smaller than 80kb). With the old code, it was possible to get a
callback for query_string and never get a callback for the URL (or at
least the end of the URL that is past 80kb), if the callback for the
URL would have been larger than 80kb.
(to be honest, I'm surprised that the MAX_FIELD_SIZE is implemented in
http_parser at all, instead of requiring that callers pay attention to
it, as it feels like it should be the caller's responsibility)
15 years ago
Ryan Dahl
d95b484e41
Update readme
15 years ago
Ryan Dahl
8beed7ef17
Fix whitespace
15 years ago
Cliff Frey
b8c3336f5d
add support for HTTP_BOTH
...
This is good for analyzing raw streams of data when one is not sure
which direction it will be in.
15 years ago
Ryan Dahl
c2acc213ac
Skip body for HEAD responses
...
TODO: need test for response with non-zero content length but no body.
15 years ago
Cliff Frey
7239788205
pass pointer to settings structure rather than pass by value
15 years ago
Cliff Frey
83b2a527db
Makefile: add http_parser.h dependencies to test targets
15 years ago
Ryan Dahl
443a6ea625
Use _g for the debug build
15 years ago
Ryan Dahl
7cfa645fc7
Fix long chunked message bug
...
The HTTP_MAX_HEADER_SIZE was being consulted at the end of the chunked
message (when you look for trailing headers).
http://github.com/ry/node/issues#issue/77
15 years ago
Ryan Dahl
88d11b394d
Support Upgrade header
15 years ago
Ryan Dahl
6f72c780f0
Remove stddef include, it's included in http_parser.c
15 years ago
Ryan Dahl
69cf8d8da9
Add documentation about callback return valeus
15 years ago
Ryan Dahl
e09651c6bb
cross platfom size_t printing
15 years ago
Ryan Dahl
da30924dc8
Use stddef.h
15 years ago
Ryan Dahl
a458431e38
Remove string.h include
15 years ago
Ryan Dahl
e07e0b952e
Tasteful vertical whitespace.
15 years ago
Ryan Dahl
4bce6b4467
Use nginx-style method compare
...
If only just to remove dependency on strncmp().
15 years ago
Ryan Dahl
dbd2dad461
Introduce http_parser_settings
15 years ago
Ryan Dahl
ef14734f6c
Use marcros instead of inline funcs to do callbacks
...
Simplifies things.
15 years ago
Ryan Dahl
d37a9c5b9b
fix typos
15 years ago
Ryan Dahl
8243fddd17
Fix c++ and mac compile errors
15 years ago
Ryan Dahl
1b30bf4ba5
Only allow 80kb of header bytes
15 years ago
Cliff Frey
d5a900264f
Allow newlines before HTTP requests.
...
I have seen cases where a browser will POST data, and then send an
extra CRLF before issuing the next request.
15 years ago
Cliff Frey
f167565742
Allow '_' in header fields.
...
Technically anything defined as a 'token' by
http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 should be
allowed, which includes !#$%^&*+-.`~| and probably others. However
this is the only one that I have found in use.
15 years ago
Cliff Frey
6409a5bd17
Allow extra '?' in query strings, and add a test for it.
15 years ago
Cliff Frey
ae8234de93
Prevent uninitialized variable use
15 years ago
Cliff Frey
31d9f0099c
Makefile: fix include path
15 years ago
Ryan Dahl
9cbd66e49a
Support 'Proxy-Connection' header
...
See http://www.http-stats.com/Proxy-Connection
15 years ago
Ryan Dahl
caef58793e
Update license for 2010
15 years ago
Ryan Dahl
1a677040c0
API: Define parser type in http_parser_init()
...
That is, for a request parser do this:
http_parser_init(my_parser, HTTP_REQUEST)
for a response parser do this:
http_parser_init(my_parser, HTTP_RESPONSE)
Then http_parse_requests() and http_parse_responses() both turn
into http_parer_execute().
15 years ago
Ryan Dahl
6108b765ce
Bugfix: sometimes servers send \n instead of \r\n
15 years ago
Ryan Dahl
1d9ebac036
Revert "Add method -> string lookup"
...
This reverts commit b795f94686
.
(I don't like this feature, and I'm not using it.)
15 years ago
Ryan Dahl
b5b116e59e
Remove unused 's_headers_done' state
15 years ago
Ryan Dahl
79947a7334
Remove EOL whitespace
15 years ago
Ryan Dahl
402eda40a7
Change flag values to bit shifts
15 years ago
Ryan Dahl
b795f94686
Add method -> string lookup
15 years ago
Ryan Dahl
4aebd8bbb9
reorder methods
15 years ago
Ryan Dahl
0d6cebd70b
wasn't correctly setting method for PROPPATCH and PROPFIND
15 years ago
Ryan Dahl
9c059ec60d
Reimplement support for extension methods
...
This sacrifices
- a little space (10 bytes),
- a few extra calculations, and
- introduces a dependency on strncmp()
to dramatically simplify the code of parsing methods and support almost
arbitrary extension methods.
In the future I will do as NGINX does and not use strncmp but bit level
blob comparisons.
15 years ago
Ryan Dahl
12808fe1e6
accept webdav methods
15 years ago
Ryan Dahl
d53606f57e
Add a macros for the usual case
15 years ago
Ryan Dahl
0cbc9101d0
Use error label, instead of returning directly
15 years ago
Ryan Dahl
2fc9c8d801
Accidentally commented out a test
15 years ago
Ryan Dahl
769f06ef93
add tags to make clean
15 years ago
Ryan Dahl
d1e0af7420
fix spelling
15 years ago
Ryan Dahl
51e9ff0314
Fix initialization bug.
...
Heap allocate parser in tests, to get errors with valgrind.
15 years ago
Ryan Dahl
873912df5e
Only use s_dead in STRICT mode.
15 years ago
Ryan Dahl
a8f7a3cd78
add message_complete_on_eof test
15 years ago
Ryan Dahl
357d7c2a24
Update readme
15 years ago
Ryan Dahl
a5d0d52a23
Don't delete http_parser.c on make clean
15 years ago