NullMessage sent before verification sync should not be silent (#1857)

This commit is contained in:
Scott Nonnenberg 2017-12-04 15:28:38 -08:00 committed by GitHub
parent c195ba2630
commit 2fdb048721
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 64 deletions

View file

@ -39085,8 +39085,7 @@ MessageReceiver.prototype.extend({
console.log('Got SyncMessage Request'); console.log('Got SyncMessage Request');
return this.removeFromCache(envelope); return this.removeFromCache(envelope);
} else if (syncMessage.read && syncMessage.read.length) { } else if (syncMessage.read && syncMessage.read.length) {
console.log('read messages', console.log('read messages from', this.getEnvelopeId(envelope));
'from', envelope.source + '.' + envelope.sourceDevice);
return this.handleRead(envelope, syncMessage.read); return this.handleRead(envelope, syncMessage.read);
} else if (syncMessage.verified) { } else if (syncMessage.verified) {
return this.handleVerified(envelope, syncMessage.verified); return this.handleVerified(envelope, syncMessage.verified);
@ -40095,7 +40094,12 @@ MessageSender.prototype = {
syncVerification: function(destination, state, identityKey) { syncVerification: function(destination, state, identityKey) {
var myNumber = textsecure.storage.user.getNumber(); var myNumber = textsecure.storage.user.getNumber();
var myDevice = textsecure.storage.user.getDeviceId(); var myDevice = textsecure.storage.user.getDeviceId();
if (myDevice != 1) { var now = Date.now();
if (myDevice === 1) {
return Promise.resolve();
}
// First send a null message to mask the sync message. // First send a null message to mask the sync message.
var nullMessage = new textsecure.protobuf.NullMessage(); var nullMessage = new textsecure.protobuf.NullMessage();
@ -40109,8 +40113,10 @@ MessageSender.prototype = {
var contentMessage = new textsecure.protobuf.Content(); var contentMessage = new textsecure.protobuf.Content();
contentMessage.nullMessage = nullMessage; contentMessage.nullMessage = nullMessage;
var silent = true; // We want the NullMessage to look like a normal outgoing message; not silent
return this.sendIndividualProto(destination, contentMessage, Date.now(), silent).then(function() { const promise = this.sendIndividualProto(destination, contentMessage, now);
return promise.then(function() {
var verified = new textsecure.protobuf.Verified(); var verified = new textsecure.protobuf.Verified();
verified.state = state; verified.state = state;
verified.destination = destination; verified.destination = destination;
@ -40123,11 +40129,9 @@ MessageSender.prototype = {
var contentMessage = new textsecure.protobuf.Content(); var contentMessage = new textsecure.protobuf.Content();
contentMessage.syncMessage = syncMessage; contentMessage.syncMessage = syncMessage;
return this.sendIndividualProto(myNumber, contentMessage, Date.now(), silent); var silent = true;
return this.sendIndividualProto(myNumber, contentMessage, now, silent);
}.bind(this)); }.bind(this));
}
return Promise.resolve();
}, },
sendGroupProto: function(numbers, proto, timestamp) { sendGroupProto: function(numbers, proto, timestamp) {

View file

@ -618,8 +618,7 @@ MessageReceiver.prototype.extend({
console.log('Got SyncMessage Request'); console.log('Got SyncMessage Request');
return this.removeFromCache(envelope); return this.removeFromCache(envelope);
} else if (syncMessage.read && syncMessage.read.length) { } else if (syncMessage.read && syncMessage.read.length) {
console.log('read messages', console.log('read messages from', this.getEnvelopeId(envelope));
'from', envelope.source + '.' + envelope.sourceDevice);
return this.handleRead(envelope, syncMessage.read); return this.handleRead(envelope, syncMessage.read);
} else if (syncMessage.verified) { } else if (syncMessage.verified) {
return this.handleVerified(envelope, syncMessage.verified); return this.handleVerified(envelope, syncMessage.verified);

View file

@ -420,7 +420,12 @@ MessageSender.prototype = {
syncVerification: function(destination, state, identityKey) { syncVerification: function(destination, state, identityKey) {
var myNumber = textsecure.storage.user.getNumber(); var myNumber = textsecure.storage.user.getNumber();
var myDevice = textsecure.storage.user.getDeviceId(); var myDevice = textsecure.storage.user.getDeviceId();
if (myDevice != 1) { var now = Date.now();
if (myDevice === 1) {
return Promise.resolve();
}
// First send a null message to mask the sync message. // First send a null message to mask the sync message.
var nullMessage = new textsecure.protobuf.NullMessage(); var nullMessage = new textsecure.protobuf.NullMessage();
@ -434,8 +439,10 @@ MessageSender.prototype = {
var contentMessage = new textsecure.protobuf.Content(); var contentMessage = new textsecure.protobuf.Content();
contentMessage.nullMessage = nullMessage; contentMessage.nullMessage = nullMessage;
var silent = true; // We want the NullMessage to look like a normal outgoing message; not silent
return this.sendIndividualProto(destination, contentMessage, Date.now(), silent).then(function() { const promise = this.sendIndividualProto(destination, contentMessage, now);
return promise.then(function() {
var verified = new textsecure.protobuf.Verified(); var verified = new textsecure.protobuf.Verified();
verified.state = state; verified.state = state;
verified.destination = destination; verified.destination = destination;
@ -448,11 +455,9 @@ MessageSender.prototype = {
var contentMessage = new textsecure.protobuf.Content(); var contentMessage = new textsecure.protobuf.Content();
contentMessage.syncMessage = syncMessage; contentMessage.syncMessage = syncMessage;
return this.sendIndividualProto(myNumber, contentMessage, Date.now(), silent); var silent = true;
return this.sendIndividualProto(myNumber, contentMessage, now, silent);
}.bind(this)); }.bind(this));
}
return Promise.resolve();
}, },
sendGroupProto: function(numbers, proto, timestamp) { sendGroupProto: function(numbers, proto, timestamp) {