Only cache session if successfully established
Andreas Straub
created 10 years ago
When receiving a message, only remember the XmppAxolotlSession wrapper
if the prospective session was actually established. This prevents us
from erroneously adding empty sessions that are never established using
received PreKeyWhisperMessages, which would lead to errors if we try to
use them for sending.
Change summary
src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java | 7
1 file changed, 6 insertions(+), 1 deletion(-)
Detailed changes
@@ -944,12 +944,13 @@ public class AxolotlService {
AxolotlAddress senderAddress = new AxolotlAddress(message.getFrom().toString(),
message.getSenderDeviceId());
+ boolean newSession = false;
XmppAxolotlSession session = sessions.get(senderAddress);
if (session == null) {
Log.d(Config.LOGTAG, "Account: "+account.getJid()+" No axolotl session found while parsing received message " + message);
// TODO: handle this properly
session = new XmppAxolotlSession(axolotlStore, senderAddress);
- sessions.put(senderAddress,session);
+ newSession = true;
}
for (XmppAxolotlMessage.XmppAxolotlMessageHeader header : message.getHeaders()) {
@@ -969,6 +970,10 @@ public class AxolotlService {
}
}
+ if (newSession && plaintextMessage != null) {
+ sessions.put(senderAddress,session);
+ }
+
return plaintextMessage;
}
}