From 0345215465c031b38a7345eaa80ef4d21cab1885 Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Wed, 14 Aug 2013 11:51:53 +0900 Subject: fix a possible address family mismatch. --- mrblib/socket.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mrblib/socket.rb b/mrblib/socket.rb index 58d097e5c..63bd6b90d 100644 --- a/mrblib/socket.rb +++ b/mrblib/socket.rb @@ -283,16 +283,17 @@ class UDPSocket def initialize(af=Socket::AF_INET) self._bless super(Socket._socket(af, Socket::SOCK_DGRAM, 0), "r+") + @af = af self end def bind(host, port) - Socket._bind(self.fileno, Socket.sockaddr_in(port, host)) + Socket._bind(self.fileno, _sockaddr_in(port, host)) 0 end def connect(host, port) - Socket._connect(self.fileno, Socket.sockaddr_in(port, host)) + Socket._connect(self.fileno, _sockaddr_in(port, host)) 0 end @@ -309,13 +310,18 @@ class UDPSocket def send(mesg, flags, host=nil, port=nil) if port - super(mesg, flags, Socket.sockaddr_in(port, host)) + super(mesg, flags, _sockaddr_in(port, host)) elsif host super(mesg, flags, host) else super(mesg, flags) end end + + def _sockaddr_in(port, host) + ai = Addrinfo.getaddrinfo(host, port, @af, Socket::SOCK_DGRAM)[0] + ai.to_sockaddr + end end class Socket -- cgit v1.2.3