diff options
| author | Tomoyuki Sahara <[email protected]> | 2013-08-14 11:51:53 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2013-08-14 11:51:53 +0900 |
| commit | 0345215465c031b38a7345eaa80ef4d21cab1885 (patch) | |
| tree | 5627b624b479540b5853fecd05e1ff481dde8465 | |
| parent | a9593e1f5774e980fbb24831c9065386a11fbf74 (diff) | |
| download | mruby-0345215465c031b38a7345eaa80ef4d21cab1885.tar.gz mruby-0345215465c031b38a7345eaa80ef4d21cab1885.zip | |
fix a possible address family mismatch.
| -rw-r--r-- | mrblib/socket.rb | 12 |
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 |
