From a2aa13051a8f81ce54e175155cf0ba70f787b93f Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Tue, 19 Nov 2013 23:23:07 +0000 Subject: [PATCH] Fixed a crash caused by trying to modify an immutable list. --- .../src/net/sf/briar/messaging/duplex/DuplexConnection.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 97b7ad4158..747a443484 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"); -- GitLab