Merge change 20784
* changes: Use 5 minute ping time when connected via mobile (prevent NAT timeout)
This commit is contained in:
commit
22cd410605
@ -61,6 +61,7 @@ import android.content.ContentValues;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -98,7 +99,13 @@ public class EasSyncService extends AbstractSyncService {
|
|||||||
static private final int COMMAND_TIMEOUT = 20*SECONDS;
|
static private final int COMMAND_TIMEOUT = 20*SECONDS;
|
||||||
static private final int PING_COMMAND_TIMEOUT = 20*MINUTES;
|
static private final int PING_COMMAND_TIMEOUT = 20*MINUTES;
|
||||||
|
|
||||||
|
// For mobile, we use a 5 minute timeout (less a few seconds)
|
||||||
|
static private final String PING_HEARTBEAT_MOBILE = "295";
|
||||||
|
// For wifi, we use a 15 minute timeout
|
||||||
|
static private final String PING_HEARTBEAT_WIFI = "900";
|
||||||
|
|
||||||
// Fallbacks (in minutes) for ping loop failures
|
// Fallbacks (in minutes) for ping loop failures
|
||||||
|
static private final int MAX_PING_FAILURES = 2;
|
||||||
static private final int PING_FALLBACK_INBOX = 5;
|
static private final int PING_FALLBACK_INBOX = 5;
|
||||||
static private final int PING_FALLBACK_PIM = 30;
|
static private final int PING_FALLBACK_PIM = 30;
|
||||||
|
|
||||||
@ -122,6 +129,7 @@ public class EasSyncService extends AbstractSyncService {
|
|||||||
String[] mBindArguments = new String[2];
|
String[] mBindArguments = new String[2];
|
||||||
InputStream mPendingPartInputStream = null;
|
InputStream mPendingPartInputStream = null;
|
||||||
HttpPost mPendingPost = null;
|
HttpPost mPendingPost = null;
|
||||||
|
int mNetworkType;
|
||||||
|
|
||||||
public EasSyncService(Context _context, Mailbox _mailbox) {
|
public EasSyncService(Context _context, Mailbox _mailbox) {
|
||||||
super(_context, _mailbox);
|
super(_context, _mailbox);
|
||||||
@ -409,6 +417,7 @@ public class EasSyncService extends AbstractSyncService {
|
|||||||
*/
|
*/
|
||||||
public void runAccountMailbox() throws IOException, EasParserException {
|
public void runAccountMailbox() throws IOException, EasParserException {
|
||||||
// Initialize exit status to success
|
// Initialize exit status to success
|
||||||
|
mNetworkType = waitForConnectivity();
|
||||||
mExitStatus = EmailServiceStatus.SUCCESS;
|
mExitStatus = EmailServiceStatus.SUCCESS;
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
@ -543,7 +552,7 @@ public class EasSyncService extends AbstractSyncService {
|
|||||||
} catch (RemoteException e1) {
|
} catch (RemoteException e1) {
|
||||||
// Don't care if this fails
|
// Don't care if this fails
|
||||||
}
|
}
|
||||||
throw new IOException();
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -644,7 +653,7 @@ public class EasSyncService extends AbstractSyncService {
|
|||||||
Integer failures = pingFailureMap.get(mailboxId);
|
Integer failures = pingFailureMap.get(mailboxId);
|
||||||
if (failures == null) {
|
if (failures == null) {
|
||||||
pingFailureMap.put(mailboxId, 1);
|
pingFailureMap.put(mailboxId, 1);
|
||||||
} else if (failures > 4) {
|
} else if (failures > MAX_PING_FAILURES) {
|
||||||
// Change all push/ping boxes (except account) to 5 minute sync
|
// Change all push/ping boxes (except account) to 5 minute sync
|
||||||
pushFallback(mailboxId);
|
pushFallback(mailboxId);
|
||||||
return;
|
return;
|
||||||
@ -656,7 +665,12 @@ public class EasSyncService extends AbstractSyncService {
|
|||||||
|
|
||||||
if (canPushCount++ == 0) {
|
if (canPushCount++ == 0) {
|
||||||
// Initialize the Ping command
|
// Initialize the Ping command
|
||||||
s.start(Tags.PING_PING).data(Tags.PING_HEARTBEAT_INTERVAL, "900")
|
String pingHeartbeat = PING_HEARTBEAT_MOBILE;
|
||||||
|
if (mNetworkType == ConnectivityManager.TYPE_WIFI) {
|
||||||
|
pingHeartbeat = PING_HEARTBEAT_WIFI;
|
||||||
|
}
|
||||||
|
s.start(Tags.PING_PING)
|
||||||
|
.data(Tags.PING_HEARTBEAT_INTERVAL, pingHeartbeat)
|
||||||
.start(Tags.PING_FOLDERS);
|
.start(Tags.PING_FOLDERS);
|
||||||
}
|
}
|
||||||
// When we're ready for Calendar/Contacts, we will check folder type
|
// When we're ready for Calendar/Contacts, we will check folder type
|
||||||
|
Loading…
Reference in New Issue
Block a user