closeSession

This commit is contained in:
Matt Corallo 2014-06-03 17:44:30 -04:00
parent 12e6b11962
commit c953c6c16d
2 changed files with 25 additions and 2 deletions

View file

@ -401,6 +401,15 @@ window.textsecure.crypto = function() {
session.indexInfo.closed = new Date().getTime();
}
self.closeOpenSessionForDevice = function(encodedNumber) {
var session = crypto_storage.getOpenSession(encodedNumber);
if (session === undefined)
return;
closeSession(session);
crypto_storage.saveSession(encodedNumber, session);
}
var initSessionFromPreKeyWhisperMessage;
var decryptWhisperMessage;
var handlePreKeyWhisperMessage = function(from, encodedMessage) {
@ -570,7 +579,8 @@ window.textsecure.crypto = function() {
var finalMessage = textsecure.protos.decodePushMessageContentProtobuf(getString(plaintext));
if ((finalMessage.flags & 1) == 1) // END_SESSION
if ((finalMessage.flags & textsecure.protos.PushMessageContentProtobuf.Flags.END_SESSION)
== textsecure.protos.PushMessageContentProtobuf.Flags.END_SESSION)
closeSession(session);
crypto_storage.saveSession(encodedNumber, session, registrationId);

View file

@ -209,7 +209,20 @@ window.textsecure.messaging = function() {
}
self.closeSession = function(number) {
//TODO
var devices = textsecure.storage.devices.getDeviceObjectsForNumber(number);
for (i in devices)
textsecure.crypto.closeOpenSessionForDevice(devices[i].encodedNumber);
return new Promise(function(resolve, reject) {
var proto = new textsecure.protos.PushMessageContentProtobuf();
proto.flags = textsecure.protos.PushMessageContentProtobuf.Flags.END_SESSION;
sendMessageProto([number], proto, function(res) {
if (res.failure.length > 0)
reject(res.failure[0].error);
else
resolve();
});
});
}
return self;