Feature #16381 ยป resolv.patch
lib/net/http.rb | ||
---|---|---|
# Net::OpenTimeout exception. The default value is 60 seconds.
|
||
attr_accessor :open_timeout
|
||
# Specify the DNS name resolution timeout in seconds. If the name
|
||
# cannot be resolved in this many seconds, it raises a
|
||
# SocketError exception. The default value is set by operation system.
|
||
attr_accessor :resolv_timeout
|
||
# Number of seconds to wait for one block to be read (via one read(2)
|
||
# call). Any number may be used, including Floats for fractional
|
||
# seconds. If the HTTP object cannot read data in this many seconds,
|
||
... | ... | |
end
|
||
D "opening connection to #{conn_address}:#{conn_port}..."
|
||
s = Timeout.timeout(@open_timeout, Net::OpenTimeout) {
|
||
begin
|
||
TCPSocket.open(conn_address, conn_port, @local_host, @local_port)
|
||
rescue => e
|
||
raise e, "Failed to open TCP connection to " +
|
||
"#{conn_address}:#{conn_port} (#{e.message})"
|
||
end
|
||
}
|
||
s = begin
|
||
Socket.tcp(conn_address, conn_port, @local_host, @local_port, connect_timeout: @open_timeout, resolv_timeout: @resolv_timeout)
|
||
rescue => e
|
||
raise e, "Failed to open TCP connection to " +
|
||
"#{conn_address}:#{conn_port} (#{e.message})"
|
||
end
|
||
s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
|
||
D "opened"
|
||
if use_ssl?
|
spec/ruby/library/net/http/http/resolv_timeout_spec.rb | ||
---|---|---|
require_relative '../../../../spec_helper'
|
||
require 'net/http'
|
||
describe "Net::HTTP#resolv_timeout" do
|
||
it "returns the seconds to wait until reading one block" do
|
||
net = Net::HTTP.new("localhost")
|
||
net.resolv_timeout.should eql(nil)
|
||
net.resolv_timeout = 10
|
||
net.resolv_timeout.should eql(10)
|
||
end
|
||
end
|
||
describe "Net::HTTP#resolv_timeout=" do
|
||
it "sets the seconds to wait till the connection is open" do
|
||
net = Net::HTTP.new("localhost")
|
||
net.resolv_timeout = 10
|
||
net.resolv_timeout.should eql(10)
|
||
end
|
||
it "returns the newly set value" do
|
||
net = Net::HTTP.new("localhost")
|
||
(net.resolv_timeout = 10).should eql(10)
|
||
end
|
||
end
|
spec/ruby/library/socket/socket/tcp_spec.rb | ||
---|---|---|
connection.close
|
||
end
|
||
end
|
||
it 'accepts tcp timeout' do
|
||
@client = Socket.tcp(@host, @port, resolv_timeout: 1)
|
||
@client.write('hello')
|
||
@client.close
|
||
end
|
||
end
|