diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java index ae2c26978..e9c17577e 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/IncomingSession.java @@ -21,13 +21,14 @@ import org.briarproject.bramble.api.sync.SyncSession; import org.briarproject.bramble.api.sync.Versions; import java.io.IOException; +import java.util.List; import java.util.concurrent.Executor; import java.util.logging.Logger; import javax.annotation.concurrent.ThreadSafe; -import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; +import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.STOPPING; import static org.briarproject.bramble.util.LogUtils.logException; @@ -39,7 +40,7 @@ import static org.briarproject.bramble.util.LogUtils.logException; class IncomingSession implements SyncSession, EventListener { private static final Logger LOG = - Logger.getLogger(IncomingSession.class.getName()); + getLogger(IncomingSession.class.getName()); private final DatabaseComponent db; private final Executor dbExecutor; @@ -84,11 +85,7 @@ class IncomingSession implements SyncSession, EventListener { dbExecutor.execute(new ReceiveRequest(r)); } else if (recordReader.hasVersions()) { Versions v = recordReader.readVersions(); - // TODO: Store remote peer's supported versions - if (LOG.isLoggable(INFO)) { - LOG.info("Received supported versions: " - + v.getSupportedVersions()); - } + dbExecutor.execute(new ReceiveVersions(v)); } else { // unknown records are ignored in RecordReader#eof() throw new FormatException(); @@ -199,4 +196,26 @@ class IncomingSession implements SyncSession, EventListener { } } } + + private class ReceiveVersions implements Runnable { + + private final Versions versions; + + private ReceiveVersions(Versions versions) { + this.versions = versions; + } + + @DatabaseExecutor + @Override + public void run() { + try { + List supported = versions.getSupportedVersions(); + db.transaction(false, + txn -> db.setSyncVersions(txn, contactId, supported)); + } catch (DbException e) { + logException(LOG, WARNING, e); + interrupt(); + } + } + } }