From d4d8d09e15f104bd5a4dcc0602f6c4fc111aa198 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Tue, 14 Sep 2021 21:28:19 +0100 Subject: [PATCH] ensure that message sender matches endpoint destination and that message is addressed to me --- core/src/main/groovy/com/muwire/core/Core.groovy | 2 +- .../com/muwire/core/connection/ConnectionAcceptor.groovy | 7 +++++-- .../muwire/core/connection/ConnectionAcceptorTest.groovy | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/core/src/main/groovy/com/muwire/core/Core.groovy b/core/src/main/groovy/com/muwire/core/Core.groovy index de0bda57..677b6547 100644 --- a/core/src/main/groovy/com/muwire/core/Core.groovy +++ b/core/src/main/groovy/com/muwire/core/Core.groovy @@ -454,7 +454,7 @@ public class Core { log.info("initializing acceptor") I2PAcceptor i2pAcceptor = new I2PAcceptor(i2pSocketManager) - connectionAcceptor = new ConnectionAcceptor(eventBus, connectionManager, props, + connectionAcceptor = new ConnectionAcceptor(eventBus, me, connectionManager, props, i2pAcceptor, hostCache, trustService, searchManager, uploadManager, fileManager, connectionEstablisher, certificateManager, chatServer, collectionManager) diff --git a/core/src/main/groovy/com/muwire/core/connection/ConnectionAcceptor.groovy b/core/src/main/groovy/com/muwire/core/connection/ConnectionAcceptor.groovy index cea9f480..2ba64eed 100644 --- a/core/src/main/groovy/com/muwire/core/connection/ConnectionAcceptor.groovy +++ b/core/src/main/groovy/com/muwire/core/connection/ConnectionAcceptor.groovy @@ -49,6 +49,7 @@ class ConnectionAcceptor { private static final int RESULT_BATCH_SIZE = 128 final EventBus eventBus + final Persona me final UltrapeerConnectionManager manager final MuWireSettings settings final I2PAcceptor acceptor @@ -69,12 +70,13 @@ class ConnectionAcceptor { volatile int browsed - ConnectionAcceptor(EventBus eventBus, UltrapeerConnectionManager manager, + ConnectionAcceptor(EventBus eventBus, Persona me, UltrapeerConnectionManager manager, MuWireSettings settings, I2PAcceptor acceptor, HostCache hostCache, TrustService trustService, SearchManager searchManager, UploadManager uploadManager, FileManager fileManager, ConnectionEstablisher establisher, CertificateManager certificateManager, ChatServer chatServer, CollectionManager collectionManager) { this.eventBus = eventBus + this.me = me this.manager = manager this.settings = settings this.acceptor = acceptor @@ -725,7 +727,8 @@ class ConnectionAcceptor { dis = new DataInputStream(new GZIPInputStream(dis)) count.times { MWMessage m = new MWMessage(dis) - eventBus.publish(new MessageReceivedEvent(message : m)) + if (m.sender.destination == e.destination && m.recipients.contains(me)) + eventBus.publish(new MessageReceivedEvent(message : m)) } } catch (Exception bad) { log.log(Level.WARNING, "failed to process LETTER", bad) diff --git a/core/src/test/groovy/com/muwire/core/connection/ConnectionAcceptorTest.groovy b/core/src/test/groovy/com/muwire/core/connection/ConnectionAcceptorTest.groovy index 43f5fdcf..1708baa3 100644 --- a/core/src/test/groovy/com/muwire/core/connection/ConnectionAcceptorTest.groovy +++ b/core/src/test/groovy/com/muwire/core/connection/ConnectionAcceptorTest.groovy @@ -1,5 +1,6 @@ package com.muwire.core.connection +import com.muwire.core.Personas import com.muwire.core.hostcache.SimpleHostCache import static org.junit.Assert.fail @@ -96,7 +97,7 @@ class ConnectionAcceptorTest { uploadManager = uploadManagerMock.proxyInstance() connectionEstablisher = connectionEstablisherMock.proxyInstance() - acceptor = new ConnectionAcceptor(eventBus, connectionManager, settings, i2pAcceptor, + acceptor = new ConnectionAcceptor(eventBus, null, connectionManager, settings, i2pAcceptor, hostCache, trustService, searchManager, uploadManager, null, connectionEstablisher, null, null, null) acceptor.start() Thread.sleep(100)