Merge pull request #151 from ThiefMaster/eventserver-ipv4-only

Only use IPv4 for EventServer connections
This commit is contained in:
Synced Synapse 2015-12-23 22:45:33 +00:00
commit 34a74b48ab
2 changed files with 19 additions and 2 deletions

View File

@ -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);

View File

@ -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