summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTomoyuki Sahara <[email protected]>2013-08-14 11:51:53 +0900
committerTomoyuki Sahara <[email protected]>2013-08-14 11:51:53 +0900
commit0345215465c031b38a7345eaa80ef4d21cab1885 (patch)
tree5627b624b479540b5853fecd05e1ff481dde8465
parenta9593e1f5774e980fbb24831c9065386a11fbf74 (diff)
downloadmruby-0345215465c031b38a7345eaa80ef4d21cab1885.tar.gz
mruby-0345215465c031b38a7345eaa80ef4d21cab1885.zip
fix a possible address family mismatch.
-rw-r--r--mrblib/socket.rb12
1 files 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