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 55e327bf1563c4b103cb52610ee091cb0815e2c8..74eac7db723e4da1066953b724573a26de937eb0 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 @@ -160,7 +160,7 @@ class ContactManagerImpl implements ContactManager { throws DbException { ContactId c = db.addContact(txn, remote, local, false, true, CONTACT_MAILBOX); - keyManager.addContact(txn, c, master, timestamp, alice, true); + //keyManager.addContact(txn, c, master, timestamp, alice, true); Contact contact = db.getContact(txn, c); for (ContactHook hook : hooks) { if (hook.getApplicableContactTypes().contains(contact.getType())) 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 9d91f9598c7bee32ccd88534d2b11f501f411883..d769f4af29217b02c411a3bd688c6f3612dffc63 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 @@ -2,7 +2,6 @@ package org.briarproject.bramble.mailbox; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactManager; -import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.contact.PrivateMailbox; import org.briarproject.bramble.api.contact.event.ContactAddedEvent; import org.briarproject.bramble.api.db.DatabaseComponent; @@ -12,7 +11,6 @@ import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventListener; 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.mailbox.MailboxService; @@ -33,7 +31,6 @@ import java.security.SecureRandom; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; import java.util.concurrent.Future; @@ -246,6 +243,7 @@ public class MailboxServiceImpl implements MailboxService, EventListener { for (TransportId transportId : transportOrder) { if (!activePlugins.containsKey(transportId)) continue; + if(transportId != LanTcpConstants.ID)continue; DuplexPlugin plugin = activePlugins.get(transportId); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/AbstractMailboxSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/AbstractMailboxSession.java index d39e05cf5441f77997c0e6802a71486154ae5cd5..5ca81fb5bfc77bde4acf204c417519809dedee43 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/AbstractMailboxSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/AbstractMailboxSession.java @@ -6,6 +6,7 @@ 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.mailbox.MailboxSession; +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; @@ -251,7 +252,7 @@ public abstract class AbstractMailboxSession implements MailboxSession { StreamContext ctx = keyManager - .getStreamContext(c, MailboxConstants.ID); + .getStreamContext(c, LanTcpConstants.ID); if (ctx == null) throw new IOException("Could not allocated stream context"); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/FeedableSyncInputStream.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/FeedableSyncInputStream.java index e5310130fadc7232abf74a62cfbe66b7eb7779b6..0aa4b778d7bb8d13165a38aa04733e6f08efd918 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/FeedableSyncInputStream.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/FeedableSyncInputStream.java @@ -8,13 +8,13 @@ import java.io.InputStream; public class FeedableSyncInputStream extends InputStream { private ByteArrayOutputStream os = new ByteArrayOutputStream(); private boolean isEOF = false; - private byte[] activeBuffer = new byte[]{}; + private byte[] activeBuffer = new byte[] {}; private int activeBufferPointer = 0; @Override public synchronized int read() throws IOException { while (!hasBytes()) { - if(isEOF) + if (isEOF) throw new EOFException(); try { @@ -48,7 +48,6 @@ public class FeedableSyncInputStream extends InputStream { throw new EOFException(); os.write(buffer); - this.notifyAll(); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java b/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java index 462be735b06443bc503d2ead34dad586df1831cc..f24908a57e3456d8b350810795010d3ffba02970 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/sync/DuplexOutgoingSession.java @@ -14,6 +14,7 @@ import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.Ack; import org.briarproject.bramble.api.sync.Message; +import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.Offer; import org.briarproject.bramble.api.sync.Request; import org.briarproject.bramble.api.sync.SyncRecordWriter; @@ -240,6 +241,11 @@ class DuplexOutgoingSession implements SyncSession, EventListener { } if (LOG.isLoggable(INFO)) LOG.info("Generated ack: " + (a != null)); + if (a != null) { + LOG.info("Owner acked " + a.getMessageIds().size() + + " messages:"); + for (MessageId id : a.getMessageIds()) LOG.info("\n" + id); + } if (a != null) writerTasks.add(new WriteAck(a)); } catch (DbException e) { logException(LOG, WARNING, e); @@ -287,6 +293,12 @@ class DuplexOutgoingSession implements SyncSession, EventListener { } if (LOG.isLoggable(INFO)) LOG.info("Generated batch: " + (b != null)); + if (b != null) { + LOG.info("Owner batched " + b.size() + + " messages:"); + for (Message m : b) + LOG.info("\n" + m.getId() + " : " + m.getGroupId()); + } if (b != null) writerTasks.add(new WriteBatch(b)); } catch (DbException e) { logException(LOG, WARNING, e); @@ -332,8 +344,15 @@ class DuplexOutgoingSession implements SyncSession, EventListener { } finally { db.endTransaction(txn); } - if (LOG.isLoggable(INFO)) + if (LOG.isLoggable(INFO)) { LOG.info("Generated offer: " + (o != null)); + if (o != null) { + LOG.info("Owner offered " + o.getMessageIds().size() + + " messages:"); + for (MessageId id : o.getMessageIds()) + LOG.info("\n" + id); + } + } if (o != null) writerTasks.add(new WriteOffer(o)); } catch (DbException e) { logException(LOG, WARNING, e); @@ -379,6 +398,11 @@ class DuplexOutgoingSession implements SyncSession, EventListener { } if (LOG.isLoggable(INFO)) LOG.info("Generated request: " + (r != null)); + if (r != null) { + LOG.info("Owner requested " + r.getMessageIds().size() + + " messages:"); + for (MessageId id : r.getMessageIds()) LOG.info("\n" + id); + } if (r != null) writerTasks.add(new WriteRequest(r)); } catch (DbException e) { logException(LOG, WARNING, e); 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 93ad805e1fdf11f68ea9ac9318dc26399062111c..bd2584e42ef90494a36a7b6ed80b4881601fbba6 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 @@ -15,6 +15,7 @@ import org.briarproject.bramble.api.lifecycle.event.LifecycleEvent; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.Ack; import org.briarproject.bramble.api.sync.Message; +import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.sync.Offer; import org.briarproject.bramble.api.sync.Request; import org.briarproject.bramble.api.sync.SyncRecordReader; @@ -71,15 +72,26 @@ class IncomingSession implements SyncSession, EventListener { } if (recordReader.hasAck()) { Ack a = recordReader.readAck(); + LOG.info("Owner ack " + a.getMessageIds().size() + + " offer of:"); + for (MessageId id : a.getMessageIds()) LOG.info("\n" + id); dbExecutor.execute(new ReceiveAck(a)); } else if (recordReader.hasMessage()) { Message m = recordReader.readMessage(); + LOG.info("Owner message received:" + m.getId() + " : " + + m.getGroupId()); dbExecutor.execute(new ReceiveMessage(m)); } else if (recordReader.hasOffer()) { Offer o = recordReader.readOffer(); + LOG.info("Owner received " + o.getMessageIds().size() + + " offer of:"); + for (MessageId id : o.getMessageIds()) LOG.info("\n" + id); dbExecutor.execute(new ReceiveOffer(o)); } else if (recordReader.hasRequest()) { Request r = recordReader.readRequest(); + LOG.info("Owner received " + r.getMessageIds().size() + + " request:"); + for (MessageId id : r.getMessageIds()) LOG.info("\n" + id); dbExecutor.execute(new ReceiveRequest(r)); } else { // unknown records are ignored in RecordReader#eof() diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java index 5784cb37830c70d418bc9a649979a3bcf1c824d7..bbf4bbd1bf9197c46d731db908b56628d2fbfe6d 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/TransportKeyManagerImpl.java @@ -276,6 +276,20 @@ class TransportKeyManagerImpl implements TransportKeyManager { throws DbException { lock.lock(); try { + StringBuilder s = new StringBuilder(); + for (Byte b : tag) { + s.append(String.format("%02x", b)); + } + LOG.info(s.toString() + "\n---------------"); + for (Map.Entry<Bytes, TagContext> entry : inContexts.entrySet()) { + if (entry.getValue().contactId.getInt() == 2) { + s = new StringBuilder(); + for (Byte b : entry.getKey().getBytes()) { + s.append(String.format("%02x", b)); + } + LOG.info(s.toString()); + } + } // Look up the incoming keys for the tag TagContext tagCtx = inContexts.remove(new Bytes(tag)); if (tagCtx == null) return null; 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 e970b6f0dc033e0236065c2ffffbbbb7b32e0e6a..517bbb9bb1b5ce57aa32579212cde97076317b60 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 @@ -210,7 +210,7 @@ class IntroduceeProtocolEngine if (timestamp == -1) throw new AssertionError(); contactManager.addContactMailbox(txn, s.getRemote().author, localAuthor.getId(), new SecretKey(s.masterKey), timestamp, - true); + false); // 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. @@ -221,7 +221,7 @@ class IntroduceeProtocolEngine //noinspection ConstantConditions Map<TransportId, KeySetId> keys = keyManager .addContact(txn, c.getId(), new SecretKey(s.masterKey), - timestamp, s.getLocal().alice, true); + timestamp, false, true); // add signed transport properties for the contact //noinspection ConstantConditions transportPropertyManager.addRemoteProperties(txn, c.getId(), diff --git a/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java b/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java index 0de274163d683d1c98eb07d77d44d13c5d0111c3..7d510f9db28a98a1da69e1d85627ee285ac3d28f 100644 --- a/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java @@ -72,7 +72,7 @@ class MailboxIntroductionCryptoImpl implements MailboxIntroductionCrypto { s.getLocal().ephemeralPublicKey, s.getLocal().ephemeralPrivateKey, s.getRemote().ephemeralPublicKey, - s.getLocal().alice + true ); } diff --git a/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionManagerImpl.java index b85ca3a82fecb7a01c082ed0a4a50773b13e51f3..9a67ab3de911ee18fd41cb10937ec298f9b49a85 100644 --- a/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionManagerImpl.java @@ -476,6 +476,7 @@ class MailboxIntroductionManagerImpl extends BdfIncomingMessageHook // Apply the client's visibility to the contact group Group g = getContactGroup(c); db.setGroupVisibility(txn, c.getId(), g.getId(), v); + LOG.info("MI visibility set to:" + v.name()); } private static class StoredSession { diff --git a/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java b/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java index 0de274163d683d1c98eb07d77d44d13c5d0111c3..d888cc3c0df4d380fb9effe30e7dbc47c5b3c4d9 100644 --- a/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java +++ b/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxIntroductionCryptoImpl.java @@ -72,7 +72,7 @@ class MailboxIntroductionCryptoImpl implements MailboxIntroductionCrypto { s.getLocal().ephemeralPublicKey, s.getLocal().ephemeralPrivateKey, s.getRemote().ephemeralPublicKey, - s.getLocal().alice + false ); } diff --git a/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxProtocolEngine.java b/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxProtocolEngine.java index 7016570b81a985063b0c61e183459b79b964083f..29dfdeff91f3a9b13975010fdd6ba8910780b2cb 100644 --- a/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxProtocolEngine.java +++ b/mailbox-core/src/main/java/org/briarproject/briar/mailbox/MailboxProtocolEngine.java @@ -230,7 +230,7 @@ class MailboxProtocolEngine extends AbstractProtocolEngine<MailboxSession> { //noinspection ConstantConditions Map<TransportId, KeySetId> keys = keyManager .addContact(txn, c.getId(), secretKey, - timestamp, s.getLocal().alice, true); + timestamp, true, true); // add signed transport properties for the contact //noinspection ConstantConditions transportPropertyManager.addRemoteProperties(txn, c.getId(),