summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYe Wen <ywen@google.com>2014-12-15 14:44:22 -0800
committerYe Wen <ywen@google.com>2014-12-15 15:28:19 -0800
commit857fb76ec009a46eebbb7c44fe87355cbcc753de (patch)
tree593ad5c1f9612540140cce80db7a72dbf323488e
parentd16e2413917d63722400d7428dd1e0a868196d56 (diff)
downloadMms-857fb76ec009a46eebbb7c44fe87355cbcc753de.tar.gz
Do not add charset to Content-Type header for some carriers
b/18604507 Change-Id: Ic29475e11e516d95196df34f29ad9361f9a7d12b
-rw-r--r--res/xml-mcc208-mnc20/mms_config.xml6
-rwxr-xr-xsrc/com/android/mms/service/MmsConfig.java9
-rw-r--r--src/com/android/mms/service/MmsHttpClient.java12
3 files changed, 24 insertions, 3 deletions
diff --git a/res/xml-mcc208-mnc20/mms_config.xml b/res/xml-mcc208-mnc20/mms_config.xml
index 486c468..1fbf09c 100644
--- a/res/xml-mcc208-mnc20/mms_config.xml
+++ b/res/xml-mcc208-mnc20/mms_config.xml
@@ -19,9 +19,10 @@
version 2 - added recipientLimit.
version 3 - added min/max recycler values.
version 4 - added sms to mms text threshold.
+ version 5 - added supportHttpCharsetHeader.
-->
-<mms_config version="4">
+<mms_config version="5">
<!-- Maximum message size in bytes for a MMS message -->
<int name="maxMessageSize">614400</int>
@@ -30,4 +31,7 @@
<!-- Maximum width for an attached image -->
<int name="maxImageWidth">2592</int>
+
+ <!-- Flag indicating whether charset should be added to Content-Type header-->
+ <bool name="supportHttpCharsetHeader">false</bool>
</mms_config>
diff --git a/src/com/android/mms/service/MmsConfig.java b/src/com/android/mms/service/MmsConfig.java
index 5777e40..62c3f2d 100755
--- a/src/com/android/mms/service/MmsConfig.java
+++ b/src/com/android/mms/service/MmsConfig.java
@@ -92,6 +92,10 @@ public class MmsConfig {
// FLAG(ywen): the following two is not supported yet.
public static final String CONFIG_ENABLE_MMS_READ_REPORTS = "enableMMSReadReports";
public static final String CONFIG_ENABLE_MMS_DELIVERY_REPORTS = "enableMMSDeliveryReports";
+ // Bouygues Telecom (20820) MMSC does not support "charset" with "Content-Type" header
+ // It would fail and return 500. See b/18604507
+ // If this is false, then we don't add "charset" to "Content-Type"
+ public static final String CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
public static final String CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize"; // in bytes
public static final String CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight"; // in pixels
public static final String CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth"; // in pixels
@@ -154,6 +158,7 @@ public class MmsConfig {
DEFAULTS.put(CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES, Boolean.valueOf(false));
DEFAULTS.put(CONFIG_ENABLE_MMS_READ_REPORTS, Boolean.valueOf(false));
DEFAULTS.put(CONFIG_ENABLE_MMS_DELIVERY_REPORTS, Boolean.valueOf(false));
+ DEFAULTS.put(CONFIG_SUPPORT_HTTP_CHARSET_HEADER, Boolean.valueOf(true));
DEFAULTS.put(CONFIG_MAX_MESSAGE_SIZE, Integer.valueOf(300 * 1024));
DEFAULTS.put(CONFIG_MAX_IMAGE_HEIGHT, Integer.valueOf(MAX_IMAGE_HEIGHT));
DEFAULTS.put(CONFIG_MAX_IMAGE_WIDTH, Integer.valueOf(MAX_IMAGE_WIDTH));
@@ -491,6 +496,10 @@ public class MmsConfig {
return getBoolean(CONFIG_ENABLE_MMS_DELIVERY_REPORTS);
}
+ public boolean getSupportHttpCharsetHeader() {
+ return getBoolean(CONFIG_SUPPORT_HTTP_CHARSET_HEADER);
+ }
+
/**
* Return the HTTP param macro value.
* Example: LINE1 returns the phone number, etc.
diff --git a/src/com/android/mms/service/MmsHttpClient.java b/src/com/android/mms/service/MmsHttpClient.java
index 03eb845..281d9b6 100644
--- a/src/com/android/mms/service/MmsHttpClient.java
+++ b/src/com/android/mms/service/MmsHttpClient.java
@@ -62,8 +62,10 @@ public class MmsHttpClient {
private static final String HEADER_VALUE_ACCEPT =
"*/*, application/vnd.wap.mms-message, application/vnd.wap.sic";
// The "Content-Type" header value
- private static final String HEADER_VALUE_CONTENT_TYPE =
+ private static final String HEADER_VALUE_CONTENT_TYPE_WITH_CHARSET =
"application/vnd.wap.mms-message; charset=utf-8";
+ private static final String HEADER_VALUE_CONTENT_TYPE_WITHOUT_CHARSET =
+ "application/vnd.wap.mms-message";
private final Context mContext;
private final SocketFactory mSocketFactory;
@@ -145,7 +147,13 @@ public class MmsHttpClient {
}
connection.setDoOutput(true);
connection.setRequestMethod(METHOD_POST);
- connection.setRequestProperty(HEADER_CONTENT_TYPE, HEADER_VALUE_CONTENT_TYPE);
+ if (mmsConfig.getSupportHttpCharsetHeader()) {
+ connection.setRequestProperty(HEADER_CONTENT_TYPE,
+ HEADER_VALUE_CONTENT_TYPE_WITH_CHARSET);
+ } else {
+ connection.setRequestProperty(HEADER_CONTENT_TYPE,
+ HEADER_VALUE_CONTENT_TYPE_WITHOUT_CHARSET);
+ }
if (Log.isLoggable(MmsService.TAG, Log.VERBOSE)) {
logHttpHeaders(connection.getRequestProperties());
}