From 67db8166ef63b1aa3da341c9bada1197655f26fd Mon Sep 17 00:00:00 2001 From: Julian Dehm <goapunk@riseup.net> Date: Wed, 26 Sep 2018 18:05:23 +0200 Subject: [PATCH] test --- .../bramble/api/contact/ContactFactory.java | 3 +++ .../bramble/api/contact/ContactMailbox.java | 26 +++++++++++++++++++ .../bramble/api/contact/ContactManager.java | 4 +++ .../bramble/contact/ContactManagerImpl.java | 16 ++++++++++++ .../briarproject/bramble/db/JdbcDatabase.java | 2 +- .../briarproject/bramble/plugin/Poller.java | 2 ++ .../mailbox/IntroduceeProtocolEngine.java | 10 ++++--- 7 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactMailbox.java diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java index b12c19c99..ab3eb6eae 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java @@ -19,6 +19,9 @@ public interface ContactFactory { case MAILBOX_OWNER: return new MailboxOwner(c, author, localAuthorId, verified, active); + case CONTACT_MAILBOX: + return new ContactMailbox(c, author, localAuthorId, verified, + active); default: throw new IllegalArgumentException("Unknown contact type"); } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactMailbox.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactMailbox.java new file mode 100644 index 000000000..6a044b94b --- /dev/null +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactMailbox.java @@ -0,0 +1,26 @@ +package org.briarproject.bramble.api.contact; + +import org.briarproject.bramble.api.identity.Author; +import org.briarproject.bramble.api.identity.AuthorId; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import javax.annotation.concurrent.Immutable; + +import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX; + +@Immutable +@NotNullByDefault +public class ContactMailbox extends Contact { + + public ContactMailbox(ContactId id, + Author author, + AuthorId localAuthorId, + boolean verified, boolean active) { + super(id, author, localAuthorId, verified, active); + } + + @Override + public ContactType getType() { + return CONTACT_MAILBOX; + } +} diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java index e2b3299e1..b2b40209d 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java @@ -66,6 +66,10 @@ public interface ContactManager { SecretKey secretKey, long currentTimeMillis, boolean alice) throws DbException; + ContactId addContactMailbox(Transaction txn, Author remote, + AuthorId local, SecretKey master, long timestamp, boolean alice) + throws DbException; + /** * Returns the contact with the given ID. */ diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java index f6b8fb515..55e327bf1 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java @@ -24,6 +24,7 @@ import javax.annotation.concurrent.ThreadSafe; import javax.inject.Inject; import static org.briarproject.bramble.api.contact.ContactType.CONTACT; +import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX; import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_OWNER; import static org.briarproject.bramble.api.contact.ContactType.PRIVATE_MAILBOX; @@ -153,6 +154,21 @@ class ContactManagerImpl implements ContactManager { return c; } + @Override + public ContactId addContactMailbox(Transaction txn, Author remote, + AuthorId local, SecretKey master, long timestamp, boolean alice) + throws DbException { + ContactId c = db.addContact(txn, remote, local, false, true, + CONTACT_MAILBOX); + keyManager.addContact(txn, c, master, timestamp, alice, true); + Contact contact = db.getContact(txn, c); + for (ContactHook hook : hooks) { + if (hook.getApplicableContactTypes().contains(contact.getType())) + hook.addingContact(txn, contact); + } + return c; + } + @Override public Contact getContact(ContactId c) throws DbException { Contact contact; diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java index 132f3b8de..a185633c7 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java @@ -996,7 +996,7 @@ abstract class JdbcDatabase implements Database<Connection> { ps = txn.prepareStatement(sql); ps.setInt(1, contactId.getInt()); if (mailboxId == null) ps.setNull(2, INTEGER); - else ps.setInt(1, mailboxId.getInt()); + else ps.setInt(2, mailboxId.getInt()); if (aliasId == null) ps.setNull(3, INTEGER); else ps.setInt(3, aliasId.getInt()); int affected = ps.executeUpdate(); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java index 8b140969c..38422eb9a 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java @@ -111,10 +111,12 @@ class Poller implements EventListener { } private void connectToContact(ContactId c) { + /* for (SimplexPlugin s : pluginManager.getSimplexPlugins()) if (s.shouldPoll()) connectToContact(c, s); for (DuplexPlugin d : pluginManager.getDuplexPlugins()) if (d.shouldPoll()) connectToContact(c, d); + */ } private void connectToContact(ContactId c, TransportId t) { diff --git a/briar-core/src/main/java/org/briarproject/briar/mailbox/IntroduceeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/mailbox/IntroduceeProtocolEngine.java index 39c5d6302..e970b6f0d 100644 --- a/briar-core/src/main/java/org/briarproject/briar/mailbox/IntroduceeProtocolEngine.java +++ b/briar-core/src/main/java/org/briarproject/briar/mailbox/IntroduceeProtocolEngine.java @@ -33,7 +33,6 @@ import javax.annotation.Nullable; import javax.inject.Inject; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX; import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.briar.mailbox.IntroduceeState.AWAIT_AUTH; import static org.briarproject.briar.mailbox.IntroduceeState.LOCAL_ACCEPTED; @@ -209,8 +208,9 @@ class IntroduceeProtocolEngine long timestamp = Math.min(s.getLocal().acceptTimestamp, s.getRemote().acceptTimestamp); if (timestamp == -1) throw new AssertionError(); - db.addContact(txn, s.getRemote().author, localAuthor.getId(), false, - true, CONTACT_MAILBOX); + contactManager.addContactMailbox(txn, s.getRemote().author, + localAuthor.getId(), new SecretKey(s.masterKey), timestamp, + true); // Only add transport properties and keys when the contact was added // This will be changed once we have a way to reset state for peers // that were contacts already at some point in the past. @@ -226,6 +226,10 @@ class IntroduceeProtocolEngine //noinspection ConstantConditions transportPropertyManager.addRemoteProperties(txn, c.getId(), m.getTransportProperties()); + Contact owner = contactManager + .getContact(txn, s.getIntroducer().getId(), + localAuthor.getId()); + db.setMailboxForContact(txn, owner.getId(), c.getId(), null); // Broadcast MailboxIntroductionSucceededEvent, because contact got added MailboxIntroductionSucceededEvent e = new MailboxIntroductionSucceededEvent(c); -- GitLab