Make sure protocol version is always set in sync services
* A recent change caused an issue in which protocolVersion could be null, resulting in an NPE * Ensure that protocolVersion is always set to a valid version, defaulting to 2.5 Bug: 2353859 Change-Id: I6e07ba3df5362c988658e401bebc1776a6780876
This commit is contained in:
parent
f06d3c2d90
commit
89ab89dd83
@ -91,6 +91,9 @@ public class EasSyncService extends AbstractSyncService {
|
||||
static private final String PING_COMMAND = "Ping";
|
||||
static private final int COMMAND_TIMEOUT = 20*SECONDS;
|
||||
|
||||
// Define our default protocol version as 2.5 (Exchange 2003)
|
||||
static private final String DEFAULT_PROTOCOL_VERSION = "2.5";
|
||||
|
||||
/**
|
||||
* We start with an 8 minute timeout, and increase/decrease by 3 minutes at a time. There's
|
||||
* no point having a timeout shorter than 5 minutes, I think; at that point, we can just let
|
||||
@ -119,7 +122,7 @@ public class EasSyncService extends AbstractSyncService {
|
||||
static private final int PING_FALLBACK_PIM = 25;
|
||||
|
||||
// Reasonable default
|
||||
String mProtocolVersion = "2.5";
|
||||
public String mProtocolVersion = DEFAULT_PROTOCOL_VERSION;
|
||||
public Double mProtocolVersionDouble;
|
||||
protected String mDeviceId = null;
|
||||
private String mDeviceType = "Android";
|
||||
@ -557,7 +560,7 @@ public class EasSyncService extends AbstractSyncService {
|
||||
SyncManager.kick("change ping boxes to push");
|
||||
}
|
||||
|
||||
// Determine our protocol version, if we haven't already
|
||||
// Determine our protocol version, if we haven't already and save it in the Account
|
||||
if (mAccount.mProtocolVersion == null) {
|
||||
userLog("Determine EAS protocol version");
|
||||
HttpResponse resp = sendHttpClientOptions();
|
||||
@ -574,6 +577,10 @@ public class EasSyncService extends AbstractSyncService {
|
||||
}
|
||||
mProtocolVersionDouble = Double.parseDouble(mProtocolVersion);
|
||||
mAccount.mProtocolVersion = mProtocolVersion;
|
||||
// Save the protocol version
|
||||
cv.clear();
|
||||
cv.put(Account.PROTOCOL_VERSION, mProtocolVersion);
|
||||
mAccount.update(mContext, cv);
|
||||
userLog(versions);
|
||||
userLog("Using version ", mProtocolVersion);
|
||||
} else {
|
||||
@ -588,7 +595,7 @@ public class EasSyncService extends AbstractSyncService {
|
||||
|
||||
// Change all pushable boxes to push when we start the account mailbox
|
||||
if (mAccount.mSyncInterval == Account.CHECK_INTERVAL_PUSH) {
|
||||
cv = new ContentValues();
|
||||
cv.clear();
|
||||
cv.put(Mailbox.SYNC_INTERVAL, Mailbox.CHECK_INTERVAL_PUSH);
|
||||
if (mContentResolver.update(Mailbox.CONTENT_URI, cv,
|
||||
SyncManager.WHERE_IN_ACCOUNT_AND_PUSHABLE,
|
||||
@ -623,7 +630,7 @@ public class EasSyncService extends AbstractSyncService {
|
||||
}
|
||||
|
||||
// Change all push/hold boxes to push
|
||||
cv = new ContentValues();
|
||||
cv.clear();
|
||||
cv.put(Mailbox.SYNC_INTERVAL, Account.CHECK_INTERVAL_PUSH);
|
||||
if (mContentResolver.update(Mailbox.CONTENT_URI, cv,
|
||||
WHERE_PUSH_HOLD_NOT_ACCOUNT_MAILBOX,
|
||||
@ -1101,11 +1108,13 @@ public class EasSyncService extends AbstractSyncService {
|
||||
mUserName = ha.mLogin;
|
||||
mPassword = ha.mPassword;
|
||||
|
||||
// Set up our protocol version
|
||||
// Set up our protocol version from the Account
|
||||
mProtocolVersion = mAccount.mProtocolVersion;
|
||||
if (mProtocolVersion != null) {
|
||||
mProtocolVersionDouble = Double.parseDouble(mProtocolVersion);
|
||||
// If it hasn't been set up, start with default version
|
||||
if (mProtocolVersion == null) {
|
||||
mProtocolVersion = DEFAULT_PROTOCOL_VERSION;
|
||||
}
|
||||
mProtocolVersionDouble = Double.parseDouble(mProtocolVersion);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user