httpx/sig/resolver/native.rbs
HoneyryderChuck 81a41d889c bugfix: remove connections from selector which have been unregistered
during interest calculation

A quirk was found whereby a connection which failed while connecting
(such as the badssl test) was properly unregistered from the pool, was
however kept in the selectables selector pool, because if this operation
happening during the interest calculation pool, and the var substitution
being performed right afterwards, leaving the pool and selector out of
sync and causing all sorts of miscalculations around timers later on.
2021-09-22 12:53:33 +01:00

65 lines
1.4 KiB
Plaintext

module HTTPX
module Resolver
class Native
extend Forwardable
include ResolverMixin
include _ToIO
DEFAULTS: Hash[Symbol, untyped]
DNS_PORT: Integer
@options: Options
@ns_index: Integer
@resolver_options: Hash[Symbol, untyped]
@nameserver: String
@_timeouts: Array[Numeric]
@timeouts: Hash[String, Array[Numeric]]
@_record_types: Hash[String, Hash["A" | "AAAA", dns_resource]]
@connections: Array[Connection]
@queries: Hash[String, Connection]
@read_buffer: String
@write_buffer: Buffer
attr_reader state: Symbol
def closed?: () -> bool
def empty?: () -> bool
def close: () -> void
def call: () -> void
def interests: () -> io_interests
def <<: (Connection) -> void
def timeout: () -> Numeric?
private
def initialize: (options) -> untyped
def calculate_interests: () -> (:r | :w)
def consume: () -> void
def do_retry: () -> void
def dread: (Integer) -> void
| () -> void
def dwrite: () -> void
def parse: (String) -> void
def resolve: (?Connection connection, ?String hostname) -> void
def build_socket: () -> void
def transition: (Symbol nextstate) -> void
def handle_error: (NativeResolveError | StandardError) -> void
end
end
end