Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Sep 1, 2012
  1. BogDan Vatra Ben Noordhuis

    Add "int http_body_is_final(const http_parser *parser)" method.

    bog-dan-ro authored bnoordhuis committed
    It's useful to check if the current chunk is the last one.
Commits on Aug 29, 2012
  1. Ben Noordhuis
Commits on Jul 24, 2012
Commits on Jul 17, 2012
  1. Use new state instead of pointer

    Bertrand Paquet authored
  2. Coding style improvment

    Bertrand Paquet authored
Commits on Jul 8, 2012
  1. Add tests

    Bertrand Paquet authored
  2. Small refactoring, add edge cases

    Bertrand Paquet authored
  3. Add tests on user info

    Bertrand Paquet authored
  4. User info implementation

    Bertrand Paquet authored
Commits on Jul 7, 2012
  1. Check host on url with hostname:port

    Bertrand Paquet authored
Commits on Jun 9, 2012
  1. Martell Malone Ben Noordhuis

    test: %zu to %lu for msvcrt fixes for Mingw64

    martell authored bnoordhuis committed
Commits on Apr 23, 2012
  1. Ben Noordhuis

    Don't assert() on whitespace in URL.

    bnoordhuis authored
    Be lenient about tabs and form feeds in non-strict mode.
Commits on Mar 12, 2012
  1. Nathan Rajlich Ben Noordhuis

    add support for "SEARCH" request methods

    TooTallNate authored bnoordhuis committed
  2. Nathan Rajlich Ben Noordhuis

    test.c: fix off-by-one on the requests test cases

    TooTallNate authored bnoordhuis committed
Commits on Feb 27, 2012
  1. Ben Noordhuis

    test: abort(), don't exit()

    bnoordhuis authored
    Makes it easier to debug failing test cases: abort() dumps core and asserts
    in a debugger.
Commits on Feb 20, 2012
  1. Ben Noordhuis
Commits on Feb 18, 2012
  1. David Gwynne Ben Noordhuis

    fix non-CONNECT tests missing port/hostname bits

    dgwynne authored bnoordhuis committed
    set is_connect properly
  2. David Gwynne Ben Noordhuis

    allow extra ? at the beginning of a query_string.

    dgwynne authored bnoordhuis committed
    fixes joyent/http-parser issue #25
  3. David Gwynne Ben Noordhuis

    implement parsing of v6 addresses and rejection of 0-length host and …

    dgwynne authored bnoordhuis committed
    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
    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.
Commits on Feb 9, 2012
  1. David Gwynne Ben Noordhuis

    Fix http_parser_parse_url for urls like "http://host/path".

    dgwynne authored bnoordhuis committed
    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.
  2. Ben Noordhuis
Commits on Jan 27, 2012
  1. Ben Noordhuis
  2. Ivo Raisr Ben Noordhuis

    http_parser_init does not clear status_code

    ivosh authored bnoordhuis committed
Commits on Jan 13, 2012
  1. Peter Griess

    Merge pull request #73 from pgriess/http-10-message-length

    pgriess authored
    Get HTTP/1.1 message length logic working for HTTP/1.0
Commits on Jan 9, 2012
  1. Peter Griess

    Implement http_parser_pause().

    pgriess authored
    - 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
Commits on Jan 7, 2012
  1. Peter Griess

    Don't wait for EOF on 0-length KA messages.

    pgriess authored
    - 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).
  2. Peter Griess

    Get HTTP/1.1 message length logic working for HTTP/1.0

    pgriess authored
    - Port message length logic from #72 to HTTP/1.0.
    - Add a bunch of unit tests for handling 0-length messages.
  3. Peter Griess

    Add http_parser_parse_url().

    pgriess authored
    - 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.
Commits on Jan 6, 2012
  1. Peter Griess

    Remove some chars from tokens[] per RFC.

    pgriess authored
    - 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.
  2. Koichi Kobayashi ry

    Fix response body is not read

    koichik authored ry committed
    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 joyent/node#2457.
    Fixes #72
Commits on Nov 22, 2011
  1. Felix Geisendörfer ry

    Accept HTTP/0.9 responses

    felixge authored ry committed
Commits on Jul 20, 2011
  1. Peter Griess

    API CHANGE: Remove path, query, fragment CBs.

    pgriess authored
    - Get rid of support for these callbacks in http_parser_settings.
    - Retain state transitions between different URL portions in
      http_parser_execute() so that we're making the same correctness
      guarantees as before.
    - These are being removed because making multiple callbacks for the same
      byte makes it more difficult to pause the parser.
Commits on Jun 20, 2011
  1. Jon Kolb
Commits on Jun 19, 2011
  1. Peter Griess

    Facility to report detailed parsing errors.

    pgriess authored
    - Add http_errno enum w/ values for many parsing error conditions. Stash
      this in http_parser.state if the 0x80 bit is set.
    - Report line numbers on error generation if the (new) HTTP_PARSER_DEBUG
      cpp symbol is set. Increases http_parser struct size by 8 bytes in
      this case.
    - Add http_errno_*() methods to help turning errno values into
      human-readable messages.
  2. Peter Griess
Something went wrong with that request. Please try again.