summaryrefslogtreecommitdiffhomepage
path: root/mrblib/socket.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mrblib/socket.rb')
-rw-r--r--mrblib/socket.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/mrblib/socket.rb b/mrblib/socket.rb
index a32a3334d..f7d4ce3a8 100644
--- a/mrblib/socket.rb
+++ b/mrblib/socket.rb
@@ -236,6 +236,12 @@ class TCPSocket
Addrinfo.foreach(host, service) { |ai|
begin
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)
super(s, "r+")
return