diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2016-12-15 03:02:44 -0700 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2016-12-15 03:02:44 -0700 |
commit | dea32500a2fa98278b05c3933d9deda918be4988 (patch) | |
tree | d1e53da429ea6575ecafffd8e19b58b658287d41 | |
parent | eeb364a1e8916609bee877b893443bd940ea87da (diff) | |
parent | 8ede3c6777ca9730b714a41ec93e1d19e1ea3ee5 (diff) | |
download | android_packages_services_Mms-staging/cm-14.1-cafrebase.tar.gz android_packages_services_Mms-staging/cm-14.1-cafrebase.tar.bz2 android_packages_services_Mms-staging/cm-14.1-cafrebase.zip |
Merge 8ede3c6777ca9730b714a41ec93e1d19e1ea3ee5 on remote branchstaging/cm-14.1-cafrebase
Change-Id: Ib162c61960099886ff8d93210e248a7402149990
-rw-r--r-- | src/com/android/mms/service/MmsHttpClient.java | 11 | ||||
-rw-r--r-- | src/com/android/mms/service/MmsNetworkManager.java | 3 | ||||
-rw-r--r-- | src/com/android/mms/service/MmsRequest.java | 4 |
3 files changed, 15 insertions, 3 deletions
diff --git a/src/com/android/mms/service/MmsHttpClient.java b/src/com/android/mms/service/MmsHttpClient.java index 1c88bbf..b117086 100644 --- a/src/com/android/mms/service/MmsHttpClient.java +++ b/src/com/android/mms/service/MmsHttpClient.java @@ -21,6 +21,7 @@ import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; import android.os.Bundle; +import android.telephony.CarrierConfigManager; import android.telephony.SmsManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -61,6 +62,7 @@ public class MmsHttpClient { private static final String HEADER_ACCEPT = "Accept"; private static final String HEADER_ACCEPT_LANGUAGE = "Accept-Language"; private static final String HEADER_USER_AGENT = "User-Agent"; + private static final String HEADER_CONNECTION = "Connection"; // The "Accept" header value private static final String HEADER_VALUE_ACCEPT = @@ -70,6 +72,7 @@ public class MmsHttpClient { "application/vnd.wap.mms-message; charset=utf-8"; private static final String HEADER_VALUE_CONTENT_TYPE_WITHOUT_CHARSET = "application/vnd.wap.mms-message"; + private static final String HEADER_CONNECTION_CLOSE = "close"; private static final int IPV4_WAIT_ATTEMPTS = 15; private static final long IPV4_WAIT_DELAY_MS = 1000; // 1 seconds @@ -146,6 +149,14 @@ public class MmsHttpClient { LogUtil.i(requestId, "HTTP: UaProfUrl=" + uaProfUrl); connection.setRequestProperty(uaProfUrlTagName, uaProfUrl); } + // Header: Connection: close (if needed) + // Some carriers require that the HTTP connection's socket is closed + // after an MMS request/response is complete. In these cases keep alive + // is disabled. See https://tools.ietf.org/html/rfc7230#section-6.6 + if (mmsConfig.getBoolean(SmsManager.MMS_CONFIG_CLOSE_CONNECTION, false)) { + LogUtil.i(requestId, "HTTP: Connection close after request"); + connection.setRequestProperty(HEADER_CONNECTION, HEADER_CONNECTION_CLOSE); + } // Add extra headers specified by mms_config.xml's httpparams addExtraHeaders(connection, mmsConfig, subId); // Different stuff for GET and POST diff --git a/src/com/android/mms/service/MmsNetworkManager.java b/src/com/android/mms/service/MmsNetworkManager.java index 67b0af6..c2e2f6a 100644 --- a/src/com/android/mms/service/MmsNetworkManager.java +++ b/src/com/android/mms/service/MmsNetworkManager.java @@ -31,7 +31,8 @@ import com.android.mms.service.exception.MmsNetworkException; */ public class MmsNetworkManager { // Timeout used to call ConnectivityManager.requestNetwork - private static final int NETWORK_REQUEST_TIMEOUT_MILLIS = 60 * 1000; + // Given that the telephony layer will retry on failures, this timeout should be high enough. + private static final int NETWORK_REQUEST_TIMEOUT_MILLIS = 30 * 60 * 1000; // Wait timeout for this class, a little bit longer than the above timeout // to make sure we don't bail prematurely private static final int NETWORK_ACQUIRE_TIMEOUT_MILLIS = diff --git a/src/com/android/mms/service/MmsRequest.java b/src/com/android/mms/service/MmsRequest.java index e4ebdc4..4eeac08 100644 --- a/src/com/android/mms/service/MmsRequest.java +++ b/src/com/android/mms/service/MmsRequest.java @@ -147,7 +147,7 @@ public abstract class MmsRequest { result = SmsManager.MMS_ERROR_IO_ERROR; } else { // Execute long retryDelaySecs = 2; - // Try multiple times of MMS HTTP request + // Try multiple times of MMS HTTP request, depending on the error. for (int i = 0; i < RETRY_TIMES; i++) { try { networkManager.acquireNetwork(requestId); @@ -182,7 +182,7 @@ public abstract class MmsRequest { } catch (MmsNetworkException e) { LogUtil.e(requestId, "MMS network acquiring failure", e); result = SmsManager.MMS_ERROR_UNABLE_CONNECT_MMS; - // Retry + break; } catch (MmsHttpException e) { LogUtil.e(requestId, "HTTP or network I/O failure", e); result = SmsManager.MMS_ERROR_HTTP_FAILURE; |