diff --git a/app/src/main/java/org/xbmc/kore/eventclient/EventServerConnection.java b/app/src/main/java/org/xbmc/kore/eventclient/EventServerConnection.java index dd5e859..44eaf55 100644 --- a/app/src/main/java/org/xbmc/kore/eventclient/EventServerConnection.java +++ b/app/src/main/java/org/xbmc/kore/eventclient/EventServerConnection.java @@ -26,6 +26,7 @@ import org.xbmc.kore.jsonrpc.HostConnection; import org.xbmc.kore.jsonrpc.method.Application; import org.xbmc.kore.jsonrpc.type.ApplicationType; import org.xbmc.kore.utils.LogUtils; +import org.xbmc.kore.utils.NetUtils; import org.xbmc.kore.utils.Utils; import java.io.IOException; @@ -97,7 +98,7 @@ public class EventServerConnection { @Override public void run() { try { - hostInetAddress = InetAddress.getByName(hostInfo.getAddress()); + hostInetAddress = NetUtils.getInet4AddressByName(hostInfo.getAddress()); } catch (UnknownHostException exc) { LogUtils.LOGD(TAG, "Got an UnknownHostException, disabling EventServer"); hostInetAddress = null; @@ -164,7 +165,7 @@ public class EventServerConnection { // Get the InetAddress final InetAddress hostInetAddress; try { - hostInetAddress = InetAddress.getByName(hostInfo.getAddress()); + hostInetAddress = NetUtils.getInet4AddressByName(hostInfo.getAddress()); } catch (UnknownHostException exc) { LogUtils.LOGD(TAG, "Couldn't get host InetAddress"); reportTestResult(callerHandler, callerCallback, false); diff --git a/app/src/main/java/org/xbmc/kore/utils/NetUtils.java b/app/src/main/java/org/xbmc/kore/utils/NetUtils.java index b4d077b..b27cac6 100644 --- a/app/src/main/java/org/xbmc/kore/utils/NetUtils.java +++ b/app/src/main/java/org/xbmc/kore/utils/NetUtils.java @@ -24,6 +24,7 @@ import java.io.FileReader; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; +import java.net.Inet4Address; import java.net.InetAddress; import java.net.InterfaceAddress; import java.net.NetworkInterface; @@ -36,6 +37,21 @@ import java.util.Enumeration; public class NetUtils { private static final String TAG = LogUtils.makeLogTag(NetUtils.class); + /** + * Gets an IPv4 address from a host name + * @param host The host to look up + * @return Inet4Address + */ + public static Inet4Address getInet4AddressByName(String host) throws UnknownHostException { + InetAddress[] addrs = InetAddress.getAllByName(host); + for (InetAddress addr : addrs) { + if (addr instanceof Inet4Address) { + return (Inet4Address)addr; + } + } + throw new UnknownHostException("No ipv4 address found"); + } + /** * Convert a IPv4 address from an integer to an InetAddress. * @param hostAddress an int corresponding to the IPv4 address in network byte order