diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxOwnerSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxOwnerSession.java index 3bb2d2edc0e4ed4644d90b0d3ff65cbb74e4e2d8..505aa71f81f6a7df1b7391bad4c7ab0b08524ceb 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxOwnerSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/MailboxOwnerSession.java @@ -78,7 +78,7 @@ public class MailboxOwnerSession extends AbstractMailboxSession { while (nextStream != null) { // Send TAKE request and delete stream if request was successfull MailboxRequestTake req = - new MailboxRequestTake(nextStream.getStream()); + new MailboxRequestTake(nextStream.getContactId(), nextStream.getStream()); mailboxProtocol.writeRequest(req); if (req.awaitAndGetResponse()) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/PrivateMailboxSession.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/PrivateMailboxSession.java index a43c6601d29f3740f20f8d6464685298abea3fed..6ef03aebdd7c74037eb9739e3898e4a4dfbb9189 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/PrivateMailboxSession.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/sessions/PrivateMailboxSession.java @@ -47,7 +47,8 @@ public class PrivateMailboxSession extends AbstractMailboxSession { MailboxProtocol mailboxProtocol, int transportMaxLatency, int transportMaxIdleTime, DatabaseComponent db) { - super(ioExecutor, db, keyManager, syncSessionFactory, streamWriterFactory, + super(ioExecutor, db, keyManager, syncSessionFactory, + streamWriterFactory, streamReaderFactory, mailboxProtocol, transportMaxLatency, transportMaxIdleTime, contactId); this.syncSessionFactory = syncSessionFactory; @@ -113,11 +114,13 @@ public class PrivateMailboxSession extends AbstractMailboxSession { MailboxRequestTake takeRequest = (MailboxRequestTake) request; InputStream in = new ByteArrayInputStream( takeRequest.getEncryptedSyncStream()); - try { - StreamContext ctx = readTag(in); + if (ctx.getContactId() != (takeRequest.getContactId())) + throw new ProtocolException( + "Stream does not match expected contactId"); + InputStream reader = streamReaderFactory.createStreamReader(in, ctx);