diff --git a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java index 97b7ad41588408d7cfe5f27739ddc3b450ac75eb..747a4434847551777dd891846dd24b358e462556 100644 --- a/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java +++ b/briar-core/src/net/sf/briar/messaging/duplex/DuplexConnection.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.security.GeneralSecurityException; +import java.util.ArrayList; import java.util.Collection; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Executor; @@ -184,7 +185,10 @@ abstract class DuplexConnection implements DatabaseListener { } else if(reader.hasRequest()) { Request r = reader.readRequest(); if(LOG.isLoggable(INFO)) LOG.info("Received request"); - dbExecutor.execute(new GenerateBatches(r.getMessageIds())); + // Make a mutable copy of the requested IDs + Collection<MessageId> requested = r.getMessageIds(); + requested = new ArrayList<MessageId>(requested); + dbExecutor.execute(new GenerateBatches(requested)); } else if(reader.hasRetentionAck()) { RetentionAck a = reader.readRetentionAck(); if(LOG.isLoggable(INFO)) LOG.info("Received retention ack");