From 7b0479ff0fa1aa9ff1f5f4939763f901fcce3f3b Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Tue, 12 Aug 2014 16:07:09 -0700 Subject: [PATCH] requestRouteToHost of URL rather than MMSC on MMS Download // FREEBIE Closes #1806 --- .../securesms/mms/MmsDownloadHelper.java | 29 +++++++--------- .../securesms/mms/MmsSendHelper.java | 33 +++++++++---------- 2 files changed, 27 insertions(+), 35 deletions(-) diff --git a/src/org/thoughtcrime/securesms/mms/MmsDownloadHelper.java b/src/org/thoughtcrime/securesms/mms/MmsDownloadHelper.java index 260da22f01..aacba4c7b6 100644 --- a/src/org/thoughtcrime/securesms/mms/MmsDownloadHelper.java +++ b/src/org/thoughtcrime/securesms/mms/MmsDownloadHelper.java @@ -82,25 +82,20 @@ public class MmsDownloadHelper extends MmsCommunication { byte[] pdu = null; for (MmsConnectionParameters.Apn param : connectionParameters.get()) { - String proxy = null; - int proxyPort = 80; - boolean hasRoute; - - if (proxyIfPossible && param.hasProxy()) { - proxy = param.getProxy(); - proxyPort = param.getPort(); - hasRoute = checkRouteToHost(context, proxy, usingMmsRadio); - } else { - hasRoute = checkRouteToHost(context, Uri.parse(param.getMmsc()).getHost(), usingMmsRadio); - } - - if (hasRoute) { - try { - pdu = makeRequest(context, url, proxy, proxyPort); - } catch(IOException e) { - Log.w("MmsDownloadHelper", "Request failed: "+e.getMessage()); + try { + if (proxyIfPossible && param.hasProxy()) { + if (checkRouteToHost(context, param.getProxy(), usingMmsRadio)) { + pdu = makeRequest(context, url, param.getProxy(), param.getPort()); + } + } else { + if (checkRouteToHost(context, Uri.parse(url).getHost(), usingMmsRadio)) { + pdu = makeRequest(context, url, null, -1); + } } + if (pdu != null) break; + } catch (IOException ioe) { + Log.w("MmsDownloadHelper", ioe); } } diff --git a/src/org/thoughtcrime/securesms/mms/MmsSendHelper.java b/src/org/thoughtcrime/securesms/mms/MmsSendHelper.java index 8a771859c7..28ed2932c1 100644 --- a/src/org/thoughtcrime/securesms/mms/MmsSendHelper.java +++ b/src/org/thoughtcrime/securesms/mms/MmsSendHelper.java @@ -101,28 +101,25 @@ public class MmsSendHelper extends MmsCommunication { Log.w(TAG, "Sending MMS of length: " + mms.length); try { MmsConnectionParameters parameters = getMmsConnectionParameters(context, apn); + for (MmsConnectionParameters.Apn param : parameters.get()) { - String proxy = null; - int proxyPort = 80; - boolean hasRoute; - - if(useProxyIfAvailable && param.hasProxy()){ - proxy = param.getProxy(); - proxyPort = param.getPort(); - hasRoute = checkRouteToHost(context, proxy, usingMmsRadio); - } else { - hasRoute = checkRouteToHost(context, Uri.parse(param.getMmsc()).getHost(), usingMmsRadio); - } - - if (hasRoute) { - try { - byte[] response = makePost(context, param.getMmsc(), proxy, proxyPort, mms); - if (response != null) return response; - } catch(IOException e) { - Log.w("MmsSendHelper", "Request failed: "+e.getMessage()); + try { + if (useProxyIfAvailable && param.hasProxy()) { + if (checkRouteToHost(context, param.getProxy(), usingMmsRadio)) { + byte[] response = makePost(context, param.getMmsc(), param.getProxy(), param.getPort(), mms); + if (response != null) return response; + } + } else { + if (checkRouteToHost(context, Uri.parse(param.getMmsc()).getHost(), usingMmsRadio)) { + byte[] response = makePost(context, param.getMmsc(), null, -1, mms); + if (response != null) return response; + } } + } catch (IOException ioe) { + Log.w(TAG, ioe); } } + throw new IOException("Connection manager could not obtain route to host."); } catch (ApnUnavailableException aue) { Log.w(TAG, aue);