diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java index aa11967a63ac3a13c1f4e30acb226e6a82900248..866042a78b19c06045bdfc413b20892cc0292426 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java @@ -28,5 +28,5 @@ public interface MailboxManager { TransportId transportId, TransportConnectionReader reader, TransportConnectionWriter writer); - void handleOwnerContactWithoutMailbox(MailboxInfo mailboxInfo); + void handleOwnerContactWithoutMailbox(ContactId contactId); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java index 5d8b45d8d915c7c6b8baee59322a824589fa0375..e0658cfa835b589dd69fb1a0d1d8bec8e078c87b 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/AbstractMailboxSession.java @@ -5,6 +5,7 @@ import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.mailbox.MailboxConstants; +import org.briarproject.bramble.api.plugin.LanTcpConstants; import org.briarproject.bramble.api.sync.SyncSession; import org.briarproject.bramble.api.sync.SyncSessionFactory; import org.briarproject.bramble.api.transport.KeyManager; @@ -23,6 +24,7 @@ import java.io.ByteArrayOutputStream; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; @@ -250,9 +252,11 @@ public abstract class AbstractMailboxSession implements Runnable { if (!hasMessages) return null; + // FIXME: using LanTcpConstants for testing StreamContext ctx = keyManager - .getStreamContext(c, MailboxConstants.ID); + .getStreamContext(c, LanTcpConstants.ID); + if (ctx == null) throw new IOException("Could not allocated stream context"); @@ -262,6 +266,7 @@ public abstract class AbstractMailboxSession implements Runnable { StreamWriter streamWriter = streamWriterFactory .createStreamWriter(os, ctx); + LOG.info("Running SYNC session for " + contactId.toString()); syncSessionFactory.createSimplexOutgoingSession(c, MailboxConstants.MAX_LATENCY, streamWriter).run(); byte [] buf = os.toByteArray(); @@ -269,6 +274,7 @@ public abstract class AbstractMailboxSession implements Runnable { if (buf.length <= 0) return null; + LOG.info("DONE, OUT LEN:" + buf.length); return buf; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java index cc87e1ab08eac9968cb83dd404f1e94d0b1f925f..2f6619ba31906df21e01356dba2c5d48c4f32094 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java @@ -9,7 +9,6 @@ import org.briarproject.bramble.api.data.BdfWriterFactory; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.mailbox.MailboxConstants; -import org.briarproject.bramble.api.mailbox.MailboxInfo; import org.briarproject.bramble.api.mailbox.MailboxManager; import org.briarproject.bramble.api.plugin.ConnectionRegistry; import org.briarproject.bramble.api.plugin.TransportConnectionReader; @@ -101,7 +100,7 @@ public class MailboxManagerImpl implements MailboxManager { @Override public void handleInomingOwnerContactConnection(StreamContext ctx, TransportId transportId, TransportConnectionReader reader, - TransportConnectionWriter writer){ + TransportConnectionWriter writer) { ioExecutor.execute( new ManageMailboxConnection(ctx, transportId, reader, writer, ContactType.MAILBOX_CONTACT) @@ -109,16 +108,16 @@ public class MailboxManagerImpl implements MailboxManager { } @Override - public void handleOwnerContactWithoutMailbox(MailboxInfo mailboxInfo) { + public void handleOwnerContactWithoutMailbox(ContactId contactId) { if (null == privateMailboxSession) return; - ioExecutor.execute( - () -> privateMailboxSession.handleContactWithoutPrivateMailbox(mailboxInfo)); + // Note: not registering this connection for now + // FIXME: ConversationActivity shows contact as connected if Mailbox connection is registered + privateMailboxSession.handleContactWithoutPrivateMailbox(contactId); } - private class ManageMailboxConnection implements Runnable { private boolean incoming; diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxServiceImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxServiceImpl.java index 7c9604cf85fba476f9bd5018ff7db8f35c6d8c5e..ad5ab387b3baea4e538ac8d1c6a4e65a7cd01fcb 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxServiceImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxServiceImpl.java @@ -1,6 +1,5 @@ package org.briarproject.bramble.mailbox; -import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.contact.ContactType; @@ -30,7 +29,6 @@ import org.briarproject.bramble.api.properties.TransportProperties; import org.briarproject.bramble.api.properties.TransportPropertyManager; import org.briarproject.bramble.api.system.Scheduler; -import java.security.SecureRandom; import java.util.Collection; import java.util.Map; import java.util.concurrent.Executor; @@ -44,7 +42,6 @@ import javax.inject.Inject; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.api.contact.ContactType.PRIVATE_MAILBOX; import static org.briarproject.bramble.api.mailbox.MailboxConstants.POLLING_INTERVALL; import static org.briarproject.bramble.util.LogUtils.logException; @@ -97,7 +94,7 @@ public class MailboxServiceImpl implements MailboxService, EventListener { try { PrivateMailbox mb = contactManager.getPrivateMailbox(); - if (mb!=null) + if (mb != null) privateMailboxId = mb.getId(); } catch (DbException e1) { if (LOG.isLoggable(WARNING)) @@ -105,7 +102,7 @@ public class MailboxServiceImpl implements MailboxService, EventListener { } if (privateMailboxId != null) hasPrivateMailbox.set(true); - + tryToRunLanMailboxFuture(); this.eventBus.addListener(this); } @@ -128,12 +125,12 @@ public class MailboxServiceImpl implements MailboxService, EventListener { } } - if (e instanceof ContactAddedEvent){ + if (e instanceof ContactAddedEvent) { if (hasPrivateMailbox.get()) return; try { PrivateMailbox mb = contactManager.getPrivateMailbox(); - if (mb!=null) + if (mb != null) privateMailboxId = mb.getId(); } catch (DbException e1) { if (LOG.isLoggable(WARNING)) @@ -210,7 +207,11 @@ public class MailboxServiceImpl implements MailboxService, EventListener { db.endTransaction(txn); } - for (MailboxInfo mailboxInfo : contactMailboxes) { + for (ContactId c : contacts.keySet()) { + mailboxManager.handleOwnerContactWithoutMailbox(c); + } + + /*for (MailboxInfo mailboxInfo : contactMailboxes) { if (mailboxInfo.getMailboxId() == null) continue; if (!connectionRegistry @@ -224,7 +225,7 @@ public class MailboxServiceImpl implements MailboxService, EventListener { mailboxInfo.getContactId(), mailboxTP)); } - } + }*/ reschedule(); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/PrivateMailboxSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/PrivateMailboxSession.java index 631878288d6b85973e5cd4d115c3c36b446eabe0..e87fac4af4ecbd6a9dc344f7623b3cf41926aaee 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/PrivateMailboxSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/PrivateMailboxSession.java @@ -66,11 +66,11 @@ public class PrivateMailboxSession extends AbstractMailboxSession { * Stores messages on the private mailbox for a contact * who does not own a mailbox */ - public void handleContactWithoutPrivateMailbox(MailboxInfo mailboxInfo) { + public void handleContactWithoutPrivateMailbox(ContactId contactId) { byte[] encryptedStream; try { encryptedStream = - getSyncStreamToStore(mailboxInfo.getContactId()); + getSyncStreamToStore(contactId); } catch (DbException | IOException e) { logException(LOG, WARNING, e); return; @@ -78,8 +78,9 @@ public class PrivateMailboxSession extends AbstractMailboxSession { if (encryptedStream == null) return; + MailboxRequest req = - new MailboxRequestStore(mailboxInfo.getAliasId(), + new MailboxRequestStore(contactId, encryptedStream); try { mailboxProtocol.writeRequest(req);