PackageTrack
Sign in Get early access

async-h1

Asynchronous HTTP 1.1 parser.

2.3.4 6.6M downloads/mo #3899 most downloaded on crates.io http-rs/async-h1

What this package is like to depend on

Last release 3 years ago

no release in 18 months

Ships unpredictably

gaps range from 2 weeks to 1.9 years

Most releases are documented

notes for 3 of 5 stable releases

17 versions withdrawn

withdrawn after publishing

7 years old

22 releases · first in 2019

0 releases in the last 12 months

see the full history below

Release timeline

22 releases · Jun 2019 to Oct 2023
2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 22
  1. 2.3.4 10 Oct 2023

    Nothing published for this version

  2. 2.3.3 21 Nov 2021

    Nothing published for this version

  3. 2.3.2 03 Mar 2021
    Release notes
    • fix: don't panic if the connection is closed at any point (#185)
    Open source →
    Release notes

    v2.3.2 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  4. 2.3.1 04 Feb 2021
    Release notes

    Patch release notes for 2.3.1:

    • fixes a bug with connection header parsing, addressing a websocket issue with firefox
    • no longer depends on default-features for http-types
    • internal refactor of testing utility to address a race condition
    Open source →
    Release notes

    v2.3.1

    Compare

    Choose a tag to compare

    Open source →
  5. 2.3.0 18 Dec 2020
    Release notes

    Fix for smuggling vulnerability in async-h1

    This release represents a fix for a flaw believed to have been present in all previous versions of async-h1, which have been yanked. This vulnerability affects any web server that uses async-h1 behind a reverse proxy, including all such Tide applications.

    The flaw was as follows:

    If the server endpoint does not attempt to read the body of a request which is longer than some specific and predictable buffer length, async-h1 will attempt to read a subsequent request from within the body content starting at that offset into the body.

    One way to exploit this vulnerability would be for an adversary to craft a request such that the body contains a second request that would not be noticed by a reverse proxy, allowing the http client to forge forwarded/x-forwarded headers on the smuggled request. If an application trusted the authenticity of these headers, it could be misled by the smuggled request.

    Another potential concern with this vulnerability is that if a reverse proxy is sending multiple http clients' requests along the same keep-alive connection, it would be possible for the smuggled request to specify a long content-length header and capture another user's request in its body. This content could be captured in a POST request to an endpoint that allows the content to be subsequently retrieved by the adversary.

    Semver

    We are releasing this as semver-minor in order to make upgrades easier. A survey of reverse dependencies indicated that nearly all users of async-h1 are using async_h1::server::accept, which is the primary server api of this crate, and which is unchanged by this fix. However, this release does represent a breaking change to the signature of decode, which while not the standard entrypoint to async-h1, is still part of our public API. We have made this tradeoff to prioritize the upgrade path for the overwhelming majority of users who only transitively depend on async-h1.

    Yanking

    We have yanked all previous versions of async-h1 from crates.io, as we believe that this vulnerability merits that action. Please contact us with any concerns about this choice.

    Additional code in this release

    This release also improves async-h1's keepalive handling, in that it now respects connection: close headers. It also includes improvements to the crate's testing tooling in order to reproduce the above bug in our tests.

    Thanks

    We would like to extend our appreciation to @Dirbaio, who identified this issue, patiently walked us through it, and helped explore potential solutions

    Open source →
    Release notes

    v2.3.0

    Compare

    Choose a tag to compare

    Open source →
  6. 2.2.1 05 Dec 2020 withdrawn
    Release notes

    Bugfix 🐛

    • fixes a regression introduced in #153 wherein query and fragment were stripped (#161)
    Open source →
    Release notes

    v2.2.1

    Compare

    Choose a tag to compare

    Open source →
  7. 2.2.0 04 Dec 2020 withdrawn
    Release notes

    Bugfixes 🐛

    • Fixes the handling of urls that start with multiple slashes, like http://example.com//double/slashes #153

    Features ✨

    • Adds support for protocol upgrades, unlocking experimental websockets support #159
    • Adds support for client chunked encoding, allowing the streaming of bodies with indeterminate length #158

    Internal 🏗️

    • Rewrote test suite in preparation for above changes #157
    • Chunked encoder is now shared between client and server #158
    • Rewrote the client and server encoders for readability #158
    Open source →
    Release notes

    v2.2.0

    Compare

    Choose a tag to compare

    Open source →
  8. 2.1.4 02 Nov 2020 withdrawn
    Release notes

    🐛 Bugfix

    • For each header from an incoming request, use append instead of insert
    Open source →
    Release notes

    v2.1.4

    Compare

    Choose a tag to compare

    Open source →
  9. 2.1.3 17 Oct 2020 withdrawn
    Release notes

    Fixes two bugs in async-h1:

    • #139: we no longer send 100-continue until the body has been read
      from

    • #143: allow chunked decoder to read poll after eof -- this resolves
      an issue with async_std::io::copy

    Open source →
    Release notes

    v2.1.3

    Compare

    Choose a tag to compare

    Open source →
  10. 2.1.2 03 Aug 2020 withdrawn
    Release notes

    This patch ensures we always populate the Request::version field when parsing requests.

    Fixes

    • Set request version #131
    Open source →
    Release notes

    v2.1.2

    Compare

    Choose a tag to compare

    Open source →
  11. 2.1.1 28 Jul 2020 withdrawn
    Release notes

    This patch fixes an issue in the client where we were incorrectly sending the URL fragment (#fragment) on requests.

    Fixes

    • Don't send URL fragment in client #128
    • Update contributing link in README.md #129

    Changes

    • Update text on minimum supported Rust version #127
    Open source →
    Release notes

    v2.1.1

    Compare

    Choose a tag to compare

    Open source →
  12. 2.1.0 05 Jul 2020 withdrawn
    Release notes

    v2.1.0

    Compare

    Choose a tag to compare

    Open source →
  13. 2.0.2 05 Jun 2020 withdrawn

    Nothing published for this version

  14. 2.0.1 29 May 2020 withdrawn

    Nothing published for this version

  15. 2.0.0 22 May 2020 withdrawn

    Nothing published for this version

  16. 1.1.2 18 Apr 2020 withdrawn

    Nothing published for this version

  17. 1.1.1 18 Apr 2020 withdrawn

    Nothing published for this version

  18. 1.1.0 11 Apr 2020 withdrawn

    Nothing published for this version

  19. 1.0.2 24 Mar 2020 withdrawn

    Nothing published for this version

  20. 1.0.1 15 Mar 2020 withdrawn

    Nothing published for this version

  21. 1.0.0 25 Feb 2020 withdrawn

    Nothing published for this version

  22. 0.0.0 01 Jun 2019 withdrawn

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive