Merge branch 'issue-261' into 'master'

reset timer baseline interval when adding new timers

Closes #261

See merge request os85/httpx!290
This commit is contained in:
HoneyryderChuck 2023-11-06 16:36:53 +00:00
commit 18f2bea9b0
3 changed files with 41 additions and 2 deletions

View File

@ -62,8 +62,11 @@ module HTTPX
addresses.first.to_s != connection.origin.host.to_s
log { "resolver: A response, applying resolution delay..." }
@pool.after(0.05) do
# double emission check
emit_resolved_connection(connection, addresses) unless connection.addresses && addresses.intersect?(connection.addresses)
unless connection.state == :closed ||
# double emission check
(connection.addresses && addresses.intersect?(connection.addresses))
emit_resolved_connection(connection, addresses)
end
end
else
emit_resolved_connection(connection, addresses)

View File

@ -24,6 +24,8 @@ module HTTPX
interval << callback
@next_interval_at = nil
interval
end

View File

@ -0,0 +1,34 @@
# frozen_string_literal: true
require "webrick"
require "webrick/httpproxy"
require "test_helper"
require "support/http_helpers"
require "support/proxy_helper"
require "support/minitest_extensions"
class Bug_1_1_0_Test < Minitest::Test
include HTTPHelpers
def test_read_timeout_firing_too_soon_before_select
timeout = { read_timeout: 1 }
uri = build_uri("/get")
begin
response = HTTPX.get(uri, timeout: timeout)
response.raise_for_status
sleep 2
response = HTTPX.get(uri, timeout: timeout)
response.raise_for_status
rescue HTTPX::ReadTimeoutError
raise Minitest::Assertion, "should not have raised a read timeout error"
end
end
private
def scheme
"http://"
end
end