chore: only Socket.set_blocking for > 1.18

This commit is contained in:
Emilien 2025-12-19 14:47:31 +01:00
parent d6b3e4151c
commit c0adb7efa1

View File

@ -3,16 +3,28 @@
# IPv6 addresses. # IPv6 addresses.
# #
class TCPSocket class TCPSocket
def initialize(host : String, port, dns_timeout = nil, connect_timeout = nil, blocking = false, family = Socket::Family::UNSPEC) {% if compare_versions(Crystal::VERSION, "1.18.0-dev") >= 0 %}
Addrinfo.tcp(host, port, timeout: dns_timeout, family: family) do |addrinfo| def initialize(host : String, port, dns_timeout = nil, connect_timeout = nil, blocking = false, family = Socket::Family::UNSPEC)
super(family: addrinfo.family, type: addrinfo.type, protocol: addrinfo.protocol) Addrinfo.tcp(host, port, timeout: dns_timeout, family: family) do |addrinfo|
Socket.set_blocking(self.fd, blocking) super(family: addrinfo.family, type: addrinfo.type, protocol: addrinfo.protocol)
connect(addrinfo, timeout: connect_timeout) do |error| Socket.set_blocking(self.fd, blocking)
close connect(addrinfo, timeout: connect_timeout) do |error|
error close
error
end
end end
end end
end {% else %}
def initialize(host : String, port, dns_timeout = nil, connect_timeout = nil, blocking = false, family = Socket::Family::UNSPEC)
Addrinfo.tcp(host, port, timeout: dns_timeout, family: family) do |addrinfo|
super(addrinfo.family, addrinfo.type, addrinfo.protocol, blocking)
connect(addrinfo, timeout: connect_timeout) do |error|
close
error
end
end
end
{% end %}
end end
# :ditto: # :ditto: