aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2016-03-11 21:42:04 -0800
committerKenny Root <kenny@the-b.org>2016-03-11 21:42:04 -0800
commitd4e9b80b5bcbf55091c79c434df4352af63fa065 (patch)
treef65a25adebec7216f7b21e520552f0a72f74640f
parent31aa10bbab29169bb028224373470ff2f438a221 (diff)
parent680c02b1ac67da920b734139ddbd1a59fd15dabc (diff)
downloadconnectbot-d4e9b80b5bcbf55091c79c434df4352af63fa065.tar.gz
connectbot-d4e9b80b5bcbf55091c79c434df4352af63fa065.tar.bz2
connectbot-d4e9b80b5bcbf55091c79c434df4352af63fa065.zip
Merge pull request #381 from kruton/hostkey-fix
Make sure new known hosts are inserted and deleted
-rw-r--r--app/src/main/java/org/connectbot/util/HostDatabase.java25
1 files changed, 14 insertions, 11 deletions
diff --git a/app/src/main/java/org/connectbot/util/HostDatabase.java b/app/src/main/java/org/connectbot/util/HostDatabase.java
index 0761c27..c383efe 100644
--- a/app/src/main/java/org/connectbot/util/HostDatabase.java
+++ b/app/src/main/java/org/connectbot/util/HostDatabase.java
@@ -434,9 +434,11 @@ public class HostDatabase extends RobustSQLiteOpenHelper implements HostStorage,
return;
}
+ String[] hostIdArg = new String[] {String.valueOf(host.getId())};
mDb.beginTransaction();
try {
- mDb.delete(TABLE_HOSTS, "_id = ?", new String[] {String.valueOf(host.getId())});
+ mDb.delete(TABLE_KNOWNHOSTS, FIELD_KNOWNHOSTS_HOSTID + " = ?", hostIdArg);
+ mDb.delete(TABLE_HOSTS, "_id = ?", hostIdArg);
mDb.setTransactionSuccessful();
} finally {
mDb.endTransaction();
@@ -590,10 +592,6 @@ public class HostDatabase extends RobustSQLiteOpenHelper implements HostStorage,
* @param hostkey the bytes of the host key itself
*/
public void saveKnownHost(String hostname, int port, String hostkeyalgo, byte[] hostkey) {
- ContentValues values = new ContentValues();
- values.put(FIELD_KNOWNHOSTS_HOSTKEYALGO, hostkeyalgo);
- values.put(FIELD_KNOWNHOSTS_HOSTKEY, hostkey);
-
HashMap<String, String> selection = new HashMap<>();
selection.put(FIELD_HOST_HOSTNAME, hostname);
selection.put(FIELD_HOST_PORT, String.valueOf(port));
@@ -605,18 +603,23 @@ public class HostDatabase extends RobustSQLiteOpenHelper implements HostStorage,
return;
}
- int numUpdated;
+ ContentValues values = new ContentValues();
+ values.put(FIELD_KNOWNHOSTS_HOSTKEYALGO, hostkeyalgo);
+ values.put(FIELD_KNOWNHOSTS_HOSTKEY, hostkey);
+ values.put(FIELD_KNOWNHOSTS_HOSTID, hostBean.getId());
+
mDb.beginTransaction();
try {
- numUpdated = mDb.update(TABLE_KNOWNHOSTS, values,
- FIELD_KNOWNHOSTS_HOSTID + " = ?",
- new String[] {String.valueOf(hostBean.getId())});
+ mDb.delete(TABLE_KNOWNHOSTS, FIELD_KNOWNHOSTS_HOSTID + " = ? AND "
+ + FIELD_KNOWNHOSTS_HOSTKEYALGO + " = ?",
+ new String[] {String.valueOf(hostBean.getId()), hostkeyalgo});
+ mDb.insert(TABLE_KNOWNHOSTS, null, values);
mDb.setTransactionSuccessful();
} finally {
mDb.endTransaction();
}
- Log.d(TAG, String.format("Finished saving hostkey information for '%s' (affected %d entries)",
- hostname, numUpdated));
+ Log.d(TAG, String.format("Finished saving hostkey information for '%s:%d' algo %s",
+ hostname, port, hostkeyalgo));
}
@Override