diff options
author | Ye Wen <ywen@google.com> | 2014-12-15 14:44:22 -0800 |
---|---|---|
committer | Ye Wen <ywen@google.com> | 2014-12-15 15:28:19 -0800 |
commit | 857fb76ec009a46eebbb7c44fe87355cbcc753de (patch) | |
tree | 593ad5c1f9612540140cce80db7a72dbf323488e | |
parent | d16e2413917d63722400d7428dd1e0a868196d56 (diff) | |
download | Mms-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.xml | 6 | ||||
-rwxr-xr-x | src/com/android/mms/service/MmsConfig.java | 9 | ||||
-rw-r--r-- | src/com/android/mms/service/MmsHttpClient.java | 12 |
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()); } |