From 2fddec85dd214d5d55c9a5547c4d9a36076c314a Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 25 Apr 2016 16:11:15 +0100 Subject: [PATCH 1/2] Don't activate contacts on incoming streams. This leaves the contact and the introduction session in inconsistent states. --- briar-core/src/org/briarproject/transport/KeyManagerImpl.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/briar-core/src/org/briarproject/transport/KeyManagerImpl.java b/briar-core/src/org/briarproject/transport/KeyManagerImpl.java index c9fc14d13..590343ca2 100644 --- a/briar-core/src/org/briarproject/transport/KeyManagerImpl.java +++ b/briar-core/src/org/briarproject/transport/KeyManagerImpl.java @@ -134,9 +134,6 @@ class KeyManagerImpl implements KeyManager, Service, EventListener { Transaction txn = db.startTransaction(false); try { ctx = m.getStreamContext(txn, tag); - // Activate the contact if not already active - if (ctx != null && !activeContacts.containsKey(ctx.getContactId())) - db.setContactActive(txn, ctx.getContactId(), true); txn.setComplete(); } finally { db.endTransaction(txn); From d414e12fb572d57a0ff1ecc43aae99e710e57424 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 25 Apr 2016 16:12:24 +0100 Subject: [PATCH 2/2] Don't return transport properties for inactive contacts. This avoids wasted connection attempts to contacts that are in the process of being introduced. --- .../briarproject/properties/TransportPropertyManagerImpl.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java b/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java index 71c93b4fd..b957adab5 100644 --- a/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java +++ b/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java @@ -164,6 +164,8 @@ class TransportPropertyManagerImpl implements TransportPropertyManager, Transaction txn = db.startTransaction(true); try { for (Contact c : db.getContacts(txn)) { + // Don't return properties for inactive contacts + if (!c.isActive()) continue; Group g = getContactGroup(c); // Find the latest remote update LatestUpdate latest = findLatest(txn, g.getId(), t, false);