Skip to content

Commit

Permalink
Add missing MSISDN headers to MMS send request
Browse files Browse the repository at this point in the history
Fixes signalapp#1935
Fixes signalapp#2451
// FREEBIE
  • Loading branch information
mcginty committed Mar 7, 2015
1 parent 49ab1e7 commit 57ebe8f
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 5 deletions.
3 changes: 2 additions & 1 deletion src/org/thoughtcrime/securesms/jobs/MmsSendJob.java
Expand Up @@ -24,6 +24,7 @@
import org.thoughtcrime.securesms.transport.UndeliverableMessageException;
import org.thoughtcrime.securesms.util.Hex;
import org.thoughtcrime.securesms.util.NumberUtil;
import org.thoughtcrime.securesms.util.TelephonyUtil;
import org.whispersystems.jobqueue.JobParameters;
import org.whispersystems.jobqueue.requirements.NetworkRequirement;
import org.whispersystems.libaxolotl.NoSessionException;
Expand Down Expand Up @@ -146,7 +147,7 @@ private MmsSendResult sendMms(MasterSecret masterSecret, MmsRadio radio, SendReq
boolean usingMmsRadio, boolean useProxy)
throws IOException, UndeliverableMessageException, InsecureFallbackApprovalException
{
String number = ((TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE)).getLine1Number();
String number = TelephonyUtil.getManager(context).getLine1Number();
boolean upgradedSecure = false;

prepareMessageMedia(masterSecret, message, MediaConstraints.MMS_CONSTRAINTS, true);
Expand Down
Expand Up @@ -20,6 +20,7 @@
import android.net.Uri;
import android.util.Log;

import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGetHC4;
Expand All @@ -41,7 +42,9 @@ public IncomingMmsConnection(Context context, Apn apn) {
@Override
protected HttpUriRequest constructRequest(boolean useProxy) throws IOException {
HttpGetHC4 request = new HttpGetHC4(apn.getMmsc());
request.addHeader("Accept", "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic");
for (Header header : getBaseHeaders()) {
request.addHeader(header);
}
if (useProxy) {
HttpHost proxy = new HttpHost(apn.getProxy(), apn.getPort());
request.setConfig(RequestConfig.custom().setProxy(proxy).build());
Expand Down
20 changes: 20 additions & 0 deletions src/org/thoughtcrime/securesms/mms/MmsConnection.java
Expand Up @@ -21,6 +21,7 @@
import android.text.TextUtils;
import android.util.Log;

import org.apache.http.Header;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
Expand All @@ -33,6 +34,7 @@
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.client.LaxRedirectStrategy;
import org.apache.http.impl.conn.BasicHttpClientConnectionManager;
import org.apache.http.message.BasicHeader;
import org.thoughtcrime.securesms.database.ApnDatabase;
import org.thoughtcrime.securesms.util.TelephonyUtil;
import org.thoughtcrime.securesms.util.Conversions;
Expand All @@ -45,6 +47,8 @@
import java.io.InputStream;
import java.net.InetAddress;
import java.net.URL;
import java.util.LinkedList;
import java.util.List;

public abstract class MmsConnection {
private static final String TAG = "MmsCommunication";
Expand Down Expand Up @@ -168,6 +172,22 @@ protected byte[] makeRequest(boolean useProxy) throws IOException {

protected abstract HttpUriRequest constructRequest(boolean useProxy) throws IOException;

protected List<Header> getBaseHeaders() {
final String number = TelephonyUtil.getManager(context).getLine1Number();
return new LinkedList<Header>() {{
add(new BasicHeader("Accept", "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic"));
add(new BasicHeader("x-wap-profile", "http://www.google.com/oha/rdf/ua-profile-kila.xml"));
add(new BasicHeader("Content-Type", "application/vnd.wap.mms-message"));
add(new BasicHeader("x-carrier-magic", "http://magic.google.com"));
if (!TextUtils.isEmpty(number)) {
add(new BasicHeader("x-up-calling-line-id", number));
add(new BasicHeader("X-MDN", number));
}
}};


}

public static class Apn {

public static Apn EMPTY = new Apn("", "", "", "", "");
Expand Down
12 changes: 9 additions & 3 deletions src/org/thoughtcrime/securesms/mms/OutgoingMmsConnection.java
Expand Up @@ -20,13 +20,18 @@
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;

import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPostHC4;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.entity.ByteArrayEntityHC4;
import org.thoughtcrime.securesms.util.TelephonyUtil;
import org.thoughtcrime.securesms.util.Util;

import java.io.IOException;

Expand All @@ -49,9 +54,10 @@ protected HttpUriRequest constructRequest(boolean useProxy)
{
try {
HttpPostHC4 request = new HttpPostHC4(apn.getMmsc());
request.addHeader("Accept", "*/*, application/vnd.wap.mms-message, application/vnd.wap.sic");
request.addHeader("x-wap-profile", "http://www.google.com/oha/rdf/ua-profile-kila.xml");
request.addHeader("Content-Type", "application/vnd.wap.mms-message");
for (Header header : getBaseHeaders()) {
request.addHeader(header);
}

request.setEntity(new ByteArrayEntityHC4(mms));
if (useProxy) {
HttpHost proxy = new HttpHost(apn.getProxy(), apn.getPort());
Expand Down
4 changes: 4 additions & 0 deletions src/org/thoughtcrime/securesms/util/TelephonyUtil.java
Expand Up @@ -9,6 +9,10 @@
public class TelephonyUtil {
private static final String TAG = TelephonyUtil.class.getSimpleName();

public static TelephonyManager getManager(final Context context) {
return (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
}

public static String getMccMnc(final Context context) {
final TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
final int configMcc = context.getResources().getConfiguration().mcc;
Expand Down

0 comments on commit 57ebe8f

Please sign in to comment.