From 698ddadbee462c3e48a8635fdc7f01eb2ddbfbf1 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 8 Nov 2016 21:37:44 +0100 Subject: [PATCH] brought restart threshold down to 8 times in 8h --- .../java/eu/siacs/conversations/Config.java | 4 ++-- .../persistance/DatabaseBackend.java | 22 ++++++++++++++----- .../services/XmppConnectionService.java | 9 ++++++++ .../conversations/ui/SettingsActivity.java | 4 ++++ 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index 1ebb4d138..9f956fa49 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -101,8 +101,8 @@ public final class Config { public static final long MAM_MAX_CATCHUP = MILLISECONDS_IN_DAY / 2; public static final int MAM_MAX_MESSAGES = 500; - public static final long FREQUENT_RESTARTS_DETECTION_WINDOW = 10 * 60 * 60 * 1000; // 10 hours - public static final long FREQUENT_RESTARTS_THRESHOLD = 10; + public static final long FREQUENT_RESTARTS_DETECTION_WINDOW = 8 * 60 * 60 * 1000; // 10 hours + public static final long FREQUENT_RESTARTS_THRESHOLD = 8; public static final ChatState DEFAULT_CHATSTATE = ChatState.ACTIVE; public static final int TYPING_TIMEOUT = 8; diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java index ad8dc62c0..6181451fc 100644 --- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -139,7 +139,9 @@ public class DatabaseBackend extends SQLiteOpenHelper { + ") ON CONFLICT IGNORE" + ");"; - private static String CREATE_START_TIMES_TABLE = "create table start_times (timestamp NUMBER);"; + private static String START_TIMES_TABLE = "start_times"; + + private static String CREATE_START_TIMES_TABLE = "create table "+START_TIMES_TABLE+" (timestamp NUMBER);"; private DatabaseBackend(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); @@ -1232,16 +1234,24 @@ public class DatabaseBackend extends SQLiteOpenHelper { public boolean startTimeCountExceedsThreshold() { SQLiteDatabase db = this.getWritableDatabase(); long cleanBeforeTimestamp = System.currentTimeMillis() - Config.FREQUENT_RESTARTS_DETECTION_WINDOW; - db.execSQL("delete from start_times where timestamp < "+cleanBeforeTimestamp); + db.execSQL("delete from "+START_TIMES_TABLE+" where timestamp < "+cleanBeforeTimestamp); ContentValues values = new ContentValues(); values.put("timestamp",System.currentTimeMillis()); - db.insert("start_times",null,values); + db.insert(START_TIMES_TABLE,null,values); String[] columns = new String[]{"count(timestamp)"}; - Cursor cursor = db.query("start_times",columns,null,null,null,null,null); + Cursor cursor = db.query(START_TIMES_TABLE,columns,null,null,null,null,null); + int count; if (cursor.moveToFirst()) { - return cursor.getInt(0) >= Config.FREQUENT_RESTARTS_THRESHOLD; + count = cursor.getInt(0); } else { - return false; + count = 0; } + cursor.close(); + return count >= Config.FREQUENT_RESTARTS_THRESHOLD; + } + + public void clearStartTimeCounter() { + SQLiteDatabase db = this.getWritableDatabase(); + db.execSQL("delete from "+START_TIMES_TABLE); } } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 044a518a6..c1bd59e9e 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -3605,6 +3605,15 @@ public class XmppConnectionService extends Service { conversation.setBookmark(bookmark); } + public void clearStartTimeCounter() { + mDatabaseExecutor.execute(new Runnable() { + @Override + public void run() { + databaseBackend.clearStartTimeCounter(); + } + }); + } + public interface OnMamPreferencesFetched { void onPreferencesFetched(Element prefs); void onPreferencesFetchFailed(); diff --git a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java index c2bf20ac4..7fcb1e3cb 100644 --- a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java @@ -249,6 +249,10 @@ public class SettingsActivity extends XmppActivity implements } } } else if (name.equals("keep_foreground_service")) { + boolean foreground_service = preferences.getBoolean("keep_foreground_service",false); + if (!foreground_service) { + xmppConnectionService.clearStartTimeCounter(); + } xmppConnectionService.toggleForegroundService(); } else if (resendPresence.contains(name)) { if (xmppConnectionServiceBound) {