Don't use ConnectivityManager checkRouteToHost for IPv6

T-Mobile LTE now uses IPv6 addresses for their MMSC, which are
incompatible with ConnectivityManager's checkRouteToHost.
This commit is contained in:
Moxie Marlinspike 2013-07-12 15:25:34 -07:00
parent bccf4895f6
commit dfa710a6fc

View File

@ -148,15 +148,17 @@ public class MmsCommunication {
return;
}
byte[] ipAddressBytes = inetAddress.getAddress();
int ipAddress = Conversions.byteArrayToIntLittleEndian(ipAddressBytes, 0);
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
Log.w("MmsCommunication", "Checking route to address: " + host + " , " + inetAddress.getHostAddress());
if (!manager.requestRouteToHost(MmsDownloader.TYPE_MOBILE_MMS, ipAddress))
throw new IOException("Connection manager could not obtain route to host.");
// if (!manager.requestRouteToHost(ConnectivityManager.TYPE_MOBILE, ipAddress))
// throw new IOException("Connection manager could not obtain route to host.");
byte[] ipAddressBytes = inetAddress.getAddress();
if (ipAddressBytes != null && ipAddressBytes.length == 4) {
int ipAddress = Conversions.byteArrayToIntLittleEndian(ipAddressBytes, 0);
ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (!manager.requestRouteToHost(MmsDownloader.TYPE_MOBILE_MMS, ipAddress))
throw new IOException("Connection manager could not obtain route to host.");
}
}
protected static AndroidHttpClient constructHttpClient(Context context, MmsConnectionParameters mmsConfig) {