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..39797cbc4cf165e93cc84b9bf096022225f0dc4e 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 @@ -10,6 +10,7 @@ import org.briarproject.bramble.api.transport.StreamContext; public interface MailboxManager { void handleOutgoingContactMailboxConnection(ContactId contactId, + ContactId mailboxId, DuplexTransportConnection connection, TransportId transportId); void handleOutgoingPrivateMailboxConnection(ContactId contactId, 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 8c9c76223536826f12be5908d6ec1e32b23a612e..26405cfd2dc11ff2594a88a546c8fd10bd2de7af 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 @@ -74,10 +74,11 @@ public class MailboxManagerImpl implements MailboxManager { @Override public void handleOutgoingContactMailboxConnection(ContactId contactId, + ContactId mailboxId, DuplexTransportConnection connection, TransportId transportId) { ioExecutor.execute( new ManageMailboxConnection(transportId, connection, - ContactType.CONTACT_MAILBOX, contactId)); + ContactType.CONTACT_MAILBOX, contactId, mailboxId)); } @Override @@ -88,7 +89,7 @@ public class MailboxManagerImpl implements MailboxManager { } ioExecutor.execute( new ManageMailboxConnection(transportId, connection, - ContactType.PRIVATE_MAILBOX, contactId)); + ContactType.PRIVATE_MAILBOX, contactId, null)); } @Override @@ -104,7 +105,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) @@ -116,11 +117,11 @@ public class MailboxManagerImpl implements MailboxManager { if (null == privateMailboxSession) return; ioExecutor.execute( - () -> privateMailboxSession.handleContactWithoutPrivateMailbox(mailboxInfo)); + () -> privateMailboxSession + .handleContactWithoutPrivateMailbox(mailboxInfo)); } - private class ManageMailboxConnection implements Runnable { private boolean incoming; @@ -130,6 +131,7 @@ public class MailboxManagerImpl implements MailboxManager { private final TransportConnectionReader reader; private final ContactId contactId; + private final ContactId mailboxId; private BdfWriter mailboxBdfWriter; private BdfReader mailboxBdfReader; private StreamContext incomingCtx = null; @@ -144,6 +146,7 @@ public class MailboxManagerImpl implements MailboxManager { incoming = true; incomingCtx = ctx; contactId = ctx.getContactId(); + mailboxId = ctx.getContactId(); this.transportId = transportId; this.contactType = contactType; this.writer = writer; @@ -155,10 +158,12 @@ public class MailboxManagerImpl implements MailboxManager { */ public ManageMailboxConnection(TransportId transportId, DuplexTransportConnection connection, - ContactType contactType, ContactId contactId) { + ContactType contactType, ContactId contactId, + ContactId mailboxId) { this.transportId = transportId; this.incoming = false; this.contactId = contactId; + this.mailboxId = mailboxId; this.contactType = contactType; writer = connection.getWriter(); reader = connection.getReader(); @@ -217,7 +222,7 @@ public class MailboxManagerImpl implements MailboxManager { throws DbException, IOException { // Allocate a stream context StreamContext ctx = - keyManager.getStreamContext(contactId, transportId); + keyManager.getStreamContext(mailboxId, transportId); if (ctx == null) throw new IOException("Unable to allocate stream context"); @@ -249,7 +254,7 @@ public class MailboxManagerImpl implements MailboxManager { throw new IOException( "Unrecognised tag for returning stream"); - if (!incomingCtx.getContactId().equals(contactId)) + if (!incomingCtx.getContactId().equals(mailboxId)) throw new IOException( "ContactId for Incoming stream does not match expected ContactId"); 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 d769f4af29217b02c411a3bd688c6f3612dffc63..e0c67f42ee29d8122da6df72c140e103ce30e3d3 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 @@ -264,7 +264,7 @@ public class MailboxServiceImpl implements MailboxService, EventListener { LOG.info("Contact mailbox connected"); mailboxManager.handleOutgoingContactMailboxConnection( - mailboxInfo.getContactId(), conn, transportId); + mailboxInfo.getContactId(), mailboxInfo.getMailboxId(), conn, transportId); } } } 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 7c5249d0ce98b9fc7ddb043ee89c0d87ca3968ea..2b7cfc489b4959f5aef7a94170e0fd16ecad55f9 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 @@ -27,7 +27,7 @@ public class FeedableSyncInputStream extends InputStream { } } - return activeBuffer[activeBufferPointer++]; + return (int) activeBuffer[activeBufferPointer++] & 0xFF; } private boolean hasBytes() { @@ -53,7 +53,6 @@ public class FeedableSyncInputStream extends InputStream { throw new EOFException(); LOG.info("Feeding Buffer: " + buffer.length); - os.write(buffer); this.notifyAll(); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxSyncRequestWriter.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxSyncRequestWriter.java index a75bfa9c281dac643ce3f000a379be7eb5ecdeab..72ad453728e595c17fc0ad27a1690bd829b3f70d 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxSyncRequestWriter.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxSyncRequestWriter.java @@ -7,7 +7,6 @@ import org.briarproject.bramble.mailbox.protocol.MailboxRequestSync; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; class MailboxSyncRequestWriter extends OutputStream implements StreamWriter { @@ -53,7 +52,7 @@ class MailboxSyncRequestWriter extends OutputStream implements StreamWriter { // If a sync session flushes without data to write it indicates // a keep alive - if (bufferOS.size() == 0){ + if (bufferOS.size() == 0) { mailboxProtocol.sendKeepAlive(); return; } 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 bbf4bbd1bf9197c46d731db908b56628d2fbfe6d..5784cb37830c70d418bc9a649979a3bcf1c824d7 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,20 +276,6 @@ 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;