diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index fcc837c856d9446bc3c63b2e6244e67bb16bf49d..908f1d2a2cda8d20ed8d664eb7a9c3bcecdfbdec 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -993,7 +993,8 @@ public class XmppConnection implements Runnable { private void resetOutboundStanzaQueue() { synchronized (this.mStanzaQueue) { - final List intermediateStanzas = new ArrayList<>(); + final ImmutableList.Builder intermediateStanzasBuilder = + new ImmutableList.Builder<>(); if (Config.EXTENDED_SM_LOGGING) { Log.d( Config.LOGTAG, @@ -1004,12 +1005,13 @@ public class XmppConnection implements Runnable { for (int i = this.stanzasSentBeforeAuthentication + 1; i <= this.stanzasSent; ++i) { final AbstractAcknowledgeableStanza stanza = this.mStanzaQueue.get(i); if (stanza != null) { - intermediateStanzas.add(stanza); + intermediateStanzasBuilder.add(stanza); } } this.mStanzaQueue.clear(); + final var intermediateStanzas = intermediateStanzasBuilder.build(); for (int i = 0; i < intermediateStanzas.size(); ++i) { - this.mStanzaQueue.put(i, intermediateStanzas.get(i)); + this.mStanzaQueue.append(i + 1, intermediateStanzas.get(i)); } this.stanzasSent = intermediateStanzas.size(); if (Config.EXTENDED_SM_LOGGING) {