Skip to content

Update dependency async-http to v0.99.0 - #155

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/async-http-0.x
Open

Update dependency async-http to v0.99.0#155
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/async-http-0.x

Conversation

@renovate

@renovate renovate Bot commented Sep 25, 2025

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
async-http "= 0.59.2""= 0.99.0" age confidence

Release Notes

socketry/async-http (async-http)

v0.99.0

Compare Source

  • Retry safe requests when a remote HTTP/2 endpoint resets the stream with INTERNAL_ERROR before returning a response.

v0.98.1

Compare Source

  • Probe idle HTTP/1 connections before reuse, avoiding requests on connections already closed by the peer.

v0.98.0

Compare Source

  • Rewind request bodies before retrying requests.

v0.97.0

Compare Source

  • Exposed all supported protocol names from the plaintext HTTP protocol negotiator.

v0.96.0

Compare Source

  • Made metrics and traces optional runtime dependencies. Applications that use the providers should depend on the corresponding gem and require the provider explicitly.

v0.95.1

Compare Source

  • Fix handling of reset stream causing complete connection failure.

v0.95.0

Compare Source

  • Use Protocol::HTTP::RefusedError for safe retry of requests not processed by the server, including non-idempotent methods like PUT.
    - Remove Async::HTTP::Protocol::RequestFailed in favour of Protocol::HTTP::RefusedError.
    - HTTP/1: Delegate request write failure handling to protocol-http1.
    - HTTP/2: Handle GOAWAY and REFUSED_STREAM via protocol-http2, enabling automatic retry of unprocessed requests.

v0.94.3

Compare Source

  • Fix response body leak in HTTP/2 server when stream is reset before send_response completes (e.g. client-side gRPC cancellation). The response body's close was never called, leaking any resources tied to body lifecycle (such as rack.response_finished callbacks and utilization metrics).

v0.94.2

Compare Source

v0.94.1

Compare Source

  • Fix defer_stop usage in HTTP1::Server, improving server graceful shutdown behavior.

v0.94.0

Compare Source

  • Propagate all errors from background reader to active streams so that they are closed correctly (e.g. errors are not missed).

v0.93.0

Compare Source

v0.92.2

Compare Source

  • Better handling of trailers. If invalid trailers are received, the connection (HTTP/1) or stream (HTTP/2) is reset.

v0.92.1

Compare Source

v0.92.0

Compare Source

  • Breaking: Remove Async::HTTP::Reference. Use Protocol::URL::Reference directly instead.

v0.91.0

Compare Source

  • Move all default trace providers into traces/provider/async/http.

v0.90.2

Compare Source

  • Don't emit resource: keyword argument in traces - it's unsupported by OpenTelemetry.

v0.90.1

Compare Source

v0.90.0

Compare Source

v0.89.0

Compare Source

v0.88.0

Compare Source

Support custom protocols with options

{ruby Async::HTTP::Protocol} contains classes for specific protocols, e.g. {ruby Async::HTTP::Protocol::HTTP1} and {ruby Async::HTTP::Protocol::HTTP2}. It also contains classes for aggregating protocols, e.g. {ruby Async::HTTP::Protocol::HTTP} and {ruby Async::HTTP::Protocol::HTTPS}. They serve as factories for creating client and server instances.

These classes are now configurable with various options, which are passed as keyword arguments to the relevant connection classes. For example, to configure an HTTP/1.1 protocol without keep-alive:

protocol = Async::HTTP::Protocol::HTTP1.new(persistent: false, maximum_line_length: 32)
endpoint = Async::HTTP::Endpoint.parse("http://localhost:9292", protocol: protocol)
server = Async::HTTP::Server.for(endpoint) do |request|
	Protocol::HTTP::Response[200, {}, ["Hello, world"]]
end.run

Making a request to the server will now close the connection after the response is received:

> curl -v http://localhost:9292
* Host localhost:9292 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying [::1]:9292...
* Connected to localhost (::1) port 9292
* using HTTP/1.x
> GET / HTTP/1.1
> Host: localhost:9292
> User-Agent: curl/8.12.1
> Accept: */*
> 
* Request completely sent off
< HTTP/1.1 200 OK
< connection: close
< content-length: 12
< 
* shutting down connection #&#8203;0
Hello, world

In addition, any line longer than 32 bytes will be rejected:

curl -v http://localhost:9292/012345678901234567890123456789012
* Host localhost:9292 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying [::1]:9292...
* Connected to localhost (::1) port 9292
* using HTTP/1.x
> GET /012345678901234567890123456789012 HTTP/1.1
> Host: localhost:9292
> User-Agent: curl/8.12.1
> Accept: */*
> 
* Request completely sent off
* Empty reply from server
* shutting down connection #&#8203;0
curl: (52) Empty reply from server

v0.87.0

Compare Source

Unify HTTP/1 and HTTP/2 CONNECT semantics

HTTP/1 has a request line "target" which takes different forms depending on the kind of request. For CONNECT requests, the target is the authority (host and port) of the target server, e.g.

CONNECT example.com:443 HTTP/1.1

In HTTP/2, the CONNECT method uses the :authority pseudo-header to specify the target, e.g.

[HEADERS FRAME]
:method: connect
:authority: example.com:443

In HTTP/1, the Request#path attribute was previously used to store the target, and this was incorrectly mapped to the :path pseudo-header in HTTP/2. This has been corrected, and the Request#authority attribute is now used to store the target for both HTTP/1 and HTTP/2, and mapped accordingly. Thus, to make a CONNECT request, you should set the Request#authority attribute, e.g.

response = client.connect(authority: "example.com:443")

For HTTP/1, the authority is mapped back to the request line target, and for HTTP/2, it is mapped to the :authority pseudo-header.

v0.86.0

Compare Source

v0.85.0

Compare Source

v0.84.0

Compare Source

  • Minor consistency fixes to Async::HTTP::Internet singleton methods.

v0.83.1

Compare Source

v0.83.0

Compare Source

v0.82.3

Compare Source

v0.82.2

Compare Source

v0.82.1

Compare Source

v0.82.0

Compare Source

  • protocol-http1 introduces a line length limit for request line, response line, header lines and chunk length lines.

v0.81.0

Compare Source

  • Expose protocol and endpoint as tags to async-pool for improved instrumentation.

v0.80.1

Compare Source

v0.80.0

Compare Source

v0.79.0

Compare Source

v0.78.0

Compare Source

v0.77.0

Compare Source

  • Improved HTTP/1 connection handling.
    • The input stream is no longer closed when the output stream is closed.

v0.76.0

Compare Source

  • Async::HTTP::Body::Writable is moved to Protocol::HTTP::Body::Writable.
    • Remove Async::HTTP::Body::Delayed with no replacement.
    • Remove Async::HTTP::Body::Slowloris with no replacement.

v0.75.0

Compare Source

  • Better handling of HTTP/1 <-> HTTP/2 proxying, specifically upgrade/CONNECT requests.

v0.74.0

Compare Source

Async::HTTP::Internet accepts keyword arguments

Async::HTTP::Internet now accepts keyword arguments for making a request, e.g.

internet = Async::HTTP::Internet.instance

# This will let you override the authority (HTTP/1.1 host header, HTTP/2 :authority header):
internet.get("https://proxy.local", authority: "example.com")

# This will let you override the scheme:
internet.get("https://example.com", scheme: "http")

v0.73.0

Compare Source

Update support for interim_response

Protocol::HTTP::Request now supports an interim_response callback, which will be called with the interim response status and headers. This works on both the client and the server:

# Server side:
def call(request)
	if request.headers["expect"].include?("100-continue")
		request.send_interim_response(100)
	end
	
	# ...
end

# Client side:
body = Async::HTTP::Body::Writable.new

interim_repsonse = proc do |status, headers|
	if status == 100
		# Continue sending the body...
		body.write("Hello, world!")
		body.close
	end
end

Async::HTTP::Internet.instance.post("https://example.com", body, interim_response: interim_response) do |response|
	unless response.success?
		body.close
	end
end

v0.72.0

Compare Source

v0.71.0

Compare Source

v0.70.0

Compare Source

v0.69.0

Compare Source

v0.68.0

Compare Source

v0.67.1

Compare Source

v0.67.0

Compare Source

v0.66.3

Compare Source

v0.66.2

Compare Source

v0.66.1

Compare Source

v0.66.0

Compare Source

v0.65.1

Compare Source

v0.65.0

Compare Source

What's Changed

Full Changelog: socketry/async-http@v0.64.2...v0.65.0

v0.64.2

Compare Source

Full Changelog: socketry/async-http@v0.64.1...v0.64.2

  • Fix Rails to_json problems.

v0.64.1

Compare Source

What's Changed

New Contributors

Full Changelog: socketry/async-http@v0.64.0...v0.64.1

v0.64.0

Compare Source

What's Changed

Full Changelog: socketry/async-http@v0.63.0...v0.64.0

v0.63.0

Compare Source

What's Changed

Full Changelog: socketry/async-http@v0.62.0...v0.63.0

v0.62.0

Compare Source

What's Changed

Full Changelog: socketry/async-http@v0.61.0...v0.62.0

v0.61.0

Compare Source

What's Changed

New Contributors

Full Changelog: socketry/async-http@v0.60.2...v0.61.0

v0.60.2

Compare Source

v0.60.1

Compare Source

v0.60.0

Compare Source

  • Update dependencies on protocol-http, protocol-http1 and protocol-http2 which now have 100% test coverage and several minor bug fixes.

Full Changelog: socketry/async-http@v0.59.5...v0.60.0

v0.59.5

Compare Source

v0.59.4

Compare Source

v0.59.3

Compare Source

What's Changed

Full Changelog: socketry/async-http@v0.59.2...v0.59.3


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from c06a043 to bbe25b3 Compare October 23, 2025 12:48
@renovate renovate Bot changed the title Update dependency async-http to v0.91.0 Update dependency async-http to v0.92.0 Oct 23, 2025
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from bbe25b3 to 7ecea93 Compare October 23, 2025 22:48
@renovate renovate Bot changed the title Update dependency async-http to v0.92.0 Update dependency async-http to v0.92.1 Oct 23, 2025
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 7ecea93 to e21d092 Compare November 18, 2025 12:58
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from e21d092 to a411639 Compare December 31, 2025 14:37
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from a411639 to 68ef0be Compare January 8, 2026 09:11
@renovate renovate Bot changed the title Update dependency async-http to v0.92.1 Update dependency async-http to v0.92.2 Jan 8, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 68ef0be to 688976b Compare January 8, 2026 12:48
@renovate renovate Bot changed the title Update dependency async-http to v0.92.2 Update dependency async-http to v0.93.0 Jan 8, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 688976b to 40f8416 Compare January 11, 2026 04:29
@renovate renovate Bot changed the title Update dependency async-http to v0.93.0 Update dependency async-http to v0.94.0 Jan 11, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 40f8416 to 9e4222c Compare January 21, 2026 13:10
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 12c5e72 to bd5cdef Compare March 13, 2026 11:50
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from bd5cdef to e8c4277 Compare April 15, 2026 22:18
@renovate renovate Bot changed the title Update dependency async-http to v0.94.2 Update dependency async-http to v0.95.0 Apr 15, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from e8c4277 to f2519d4 Compare May 6, 2026 00:37
@renovate renovate Bot changed the title Update dependency async-http to v0.95.0 Update dependency async-http to v0.95.1 May 6, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from f2519d4 to 70ea8e0 Compare May 18, 2026 18:06
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 70ea8e0 to d50971f Compare July 17, 2026 09:27
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from d50971f to faf3e6d Compare July 21, 2026 00:57
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from faf3e6d to b3482d6 Compare July 22, 2026 06:46
@renovate renovate Bot changed the title Update dependency async-http to v0.95.1 Update dependency async-http to v0.96.0 Jul 22, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from b3482d6 to 4dba33f Compare July 24, 2026 01:31
@renovate renovate Bot changed the title Update dependency async-http to v0.96.0 Update dependency async-http to v0.97.0 Jul 24, 2026
@renovate
renovate Bot force-pushed the renovate/async-http-0.x branch from 4dba33f to afa5b79 Compare July 25, 2026 01:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants