Commit 3dad125a authored by Tomoyuki Sahara's avatar Tomoyuki Sahara

TCPSocket.new supports "local_host" and "local_service".

parent b2a0c9c6
...@@ -236,6 +236,12 @@ class TCPSocket ...@@ -236,6 +236,12 @@ class TCPSocket
Addrinfo.foreach(host, service) { |ai| Addrinfo.foreach(host, service) { |ai|
begin begin
s = Socket._socket(ai.afamily, Socket::SOCK_STREAM, 0) s = Socket._socket(ai.afamily, Socket::SOCK_STREAM, 0)
if local_host or local_service
local_host ||= (ai.afamily == Socket::AF_INET) ? "0.0.0.0" : "::"
local_service ||= "0"
bi = Addrinfo.getaddrinfo(local_host, local_service, ai.afamily, ai.socktype)[0]
Socket._bind(s, bi.to_sockaddr)
end
Socket._connect(s, ai.to_sockaddr) Socket._connect(s, ai.to_sockaddr)
super(s, "r+") super(s, "r+")
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment