Permalink
Commits on Feb 18, 2012
  1. fix http_parser_parse_url tests.

    provide tests for query_strings with extra ? at the beginning based
    on joyent/http-parser issue #25
    
    fix non-CONNECT tests for missing port/hostname bits by setting
    is_connect properly
    committed Feb 18, 2012
  2. allow extra ? at the beginning of a query_string.

    fixes joyent/http-parser issue #25
    committed Feb 18, 2012
  3. implement parsing of v6 addresses and rejection of 0-length host and …

    …ports.
    
    the v6 parsing works by adding extra states for working with the
    [] notation for v6 addresses. hosts and ports cannot be 0-length
    because we url parsing from ending when we expect those fields to
    begin.
    
    http_parser_parse_url gets a free check for the correctness of
    CONNECT urls (they can only be host:port).
    
    this addresses the following issues:
    
    i was bored and had my head in this space.
    committed with bnoordhuis Feb 10, 2012
Commits on Feb 15, 2012
  1. Update AUTHORS

    bnoordhuis committed Feb 15, 2012
Commits on Feb 13, 2012
  1. build: add shared libraries target

    LE ROUX Thomas committed with bnoordhuis Feb 9, 2012
Commits on Feb 9, 2012
  1. Fix http_parser_parse_url for urls like "http://host/path".

    Before this change it would include the last slash in the separator between the
    schema and host as part of the host. we cant use the trick used for skipping the
    separator before ports, query strings, and fragments because if it was a CONNECT
    style url string (host:port) it would skip the first character of the hostname.
    
    Work around this by introducing a few more states to represent these separators
    in a url differently to what theyre separating. this in turn lets us simplify
    the url parsing so can simply skip what it considers delimiters rather than
    having to special case certain types of url parts and skip their prefixes.
    
    Add tests for the http_parser_parse_url().
    
    This compares the http_parser_url struct that http_parser_parse_url()
    produces against one that we expect from the test. If they differ
    then http_parser_parse_url() misbehaved.
    committed with bnoordhuis Feb 6, 2012
Commits on Jan 27, 2012
  1. Merge pull request #78 from bnoordhuis/unsigned-content-length

    Make content_length unsigned, add overflow checks.
    bnoordhuis committed Jan 27, 2012
  2. Use "" instead of <> for the http_parser.h include.

    This avoids having to specify -I when building.
    udp committed with bnoordhuis Jan 27, 2012
  3. Don't use 'inline'.

    'inline' is not a recognized C89 keyword, it made the build fail with strict or
    older compilers (msvc 2008, gcc with -std=c89).
    
    'inline' is also just a hint, one that gcc 4.4.3 in this particular case happily
    ignored. Ergo, remove it.
    bnoordhuis committed Jan 27, 2012
  4. Merge pull request #82 from ivosh/master

    http_parser_init does not clear status_code
    bnoordhuis committed Jan 27, 2012
Commits on Jan 22, 2012
  1. Merge pull request #77 from AndreLouisCaron/compile-fix

    Fixes build on MSVC.
    bnoordhuis committed Jan 22, 2012
Commits on Jan 21, 2012
  1. Fixes build on MSVC.

    AndreLouisCaron committed Jan 21, 2012
Commits on Jan 13, 2012
  1. Merge pull request #73 from pgriess/http-10-message-length

    Get HTTP/1.1 message length logic working for HTTP/1.0
    pgriess committed Jan 13, 2012
Commits on Jan 9, 2012
  1. Merge pull request #55 from pgriess/pause

    RFC: Implement http_pause()
    pgriess committed Jan 9, 2012
  2. Implement http_parser_pause().

    Summary:
    - Add http_parser_pause() API. A callback may invoke this at any time.
      This will cause http_parser_parse() to return indicating that it
      parsed less than the number of requested bytes and set an error to
      HBE_PAUSED. A paused parser with fail with HBE_PAUSED until it is
      un-paused with http_parser_pause().
    - Stop using 'state', 'header_state', 'index', and 'nread' shadow
      variables and then updating their http_parser fields when we're done.
      Instead, update the live values as we go. This will make it possible
      to return from anywhere in the parser (say, due to EPAUSED) and have
      valid/expected state.
    - Update state before making callbacks so that if the want to pause,
      we'll know the correct state already.
    - Make sure that every callback has a state that uniquely identifies the
      next step so that we can resume in the right place if we were suppoed
      to be paused.
    - Clean and re-factor up CALLBACK() macros.
    - Use CALLBACK() macros for (almost) all callbacks; on_headers_complete
      is still a special case. This includes on_body which we used to invoke
      manually with a long run of bytes. We now use a 'body' mark and hit
      its callback just like every other data callback.
    - Clean up (most) gotos and replace with real states.
    - Add some unit tests.
    
    Fixes #70
    pgriess committed Jan 7, 2012
Commits on Jan 7, 2012
  1. Don't wait for EOF on 0-length KA messages.

    - Break EOF handling out of http_should_keep_alive() into
      http_message_needs_eof(), which we now use when determining what to do
      with a message of unknown length. This prevents us from falling into
      the s_body_identity_eof state in the cases where we actually *do* know
      the length of the message (e.g. because the response status was 204).
    pgriess committed Jan 7, 2012
  2. Get HTTP/1.1 message length logic working for HTTP/1.0

    - Port message length logic from #72 to HTTP/1.0.
    - Add a bunch of unit tests for handling 0-length messages.
    pgriess committed Jan 6, 2012
  3. Merge pull request #58 from pgriess/parse_url

    Add http_parser_parse_url().
    pgriess committed Jan 7, 2012
  4. Add http_parser_parse_url().

    - Add an http_parser_parse_url() method to parse a URL into its
      constituent components. This uses the same underlying parser
      as http_parser_parse() and doesn't do any data copies.
    - Re-add the URL components in various test.c structures; validate
      them when parsing.
    pgriess committed Jul 21, 2011
Commits on Jan 6, 2012
  1. Merge pull request #64 from pgriess/i13

    Remove some chars from tokens[] per RFC.
    pgriess committed Jan 6, 2012
  2. Remove some chars from tokens[] per RFC.

    - Treat ' ' specially, as apparently IIS6.0 can send this in headers.
      Allow this character through if we're not in strict mode.
    - Move some test code around so that test indices don't break when
      HTTP_PARSER_STRICT changes.
    
    Fixes #13.
    pgriess committed Sep 8, 2011
  3. Fix response body is not read

    With HTTP/1.1, if neither Content-Length nor Transfer-Encoding is present,
    section 4.4 of RFC 2616 suggests http-parser needs to read a response body
    until the connection is closed (except the response must not include a body)
    
    See also nodejs/node-v0.x-archive#2457.
    Fixes #72
    koichik committed with ry Jan 4, 2012
Commits on Dec 13, 2011
  1. Fix compilation on MSVC 2008 which doesn't bundle stdint.h

    Thanks to Steve Ridout for the patch. Fixes #69.
    ry committed Dec 13, 2011
Commits on Nov 22, 2011
Commits on Oct 2, 2011
Commits on Aug 29, 2011
  1. Merge pull request #61 from bnoordhuis/master

    Single-bit bitfield 'upgrade' should be unsigned.
    clifffrey committed Aug 29, 2011
  2. Single-bit bitfield 'upgrade' should be unsigned.

    Fixes sparse error report: dubious one-bit signed bitfield.
    bnoordhuis committed Aug 29, 2011
Commits on Aug 7, 2011
  1. Peter Bright's VC fixes

    ry committed Aug 7, 2011
Commits on Aug 6, 2011
  1. Support MSVS

    ry committed Aug 6, 2011