Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/features/signal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
//! Encryption, decryption, session management, and participant node creation.

use anyhow::{Result, anyhow};
use prost::Message as ProtoMessage;
use wacore::libsignal::protocol::{
CiphertextMessage, PreKeySignalMessage, SignalMessage, UsePQRatchet, message_decrypt,
message_encrypt,
Expand Down Expand Up @@ -270,7 +269,7 @@ impl<'a> Signal<'a> {
_session_guards.push(mutex.lock().await);
}

let plaintext = MessageUtils::pad_message_v2(message.encode_to_vec());
let plaintext = MessageUtils::encode_and_pad(message);
let mut adapter = self.client.signal_adapter().await;
let mediatype = wacore::send::media_type_from_message(message);
let hide_decrypt_fail = wacore::send::should_hide_decrypt_fail(message);
Expand Down
18 changes: 9 additions & 9 deletions src/receipt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,25 +46,25 @@ impl Client {

debug!("Received receipt type '{receipt_type:?}' for message {id} from {from}");

let sender = if from.is_group() {
let is_group = from.is_group();
let sender = if is_group {
participant.unwrap_or_else(|| from.clone())
} else {
from.clone()
};

let receipt = Receipt {
message_ids: vec![id.clone()],
message_ids: vec![id],
source: crate::types::message::MessageSource {
chat: from.clone(),
sender: sender.clone(),
chat: from,
sender,
..Default::default()
},
timestamp: wacore::time::now_utc(),
r#type: receipt_type.clone(),
message_sender: sender.clone(),
r#type: receipt_type,
};

if receipt_type == ReceiptType::Retry {
if receipt.r#type == ReceiptType::Retry {
let client_clone = Arc::clone(self);
let node_clone = Arc::clone(&node);
self.runtime
Expand All @@ -81,7 +81,7 @@ impl Client {
}
}))
.detach();
} else if receipt_type == ReceiptType::EncRekeyRetry {
} else if receipt.r#type == ReceiptType::EncRekeyRetry {
// WA Web: both "retry" and "enc_rekey_retry" route through
// handleMessageRetryRequest, but enc_rekey_retry branches to the
// VoIP stack's resendEncRekeyRetry(peerJid, retryCount).
Expand All @@ -97,7 +97,7 @@ impl Client {
.optional_string("call-id")
.as_deref()
.unwrap_or_default(),
from,
receipt.source.chat,
child_attrs
.optional_string("call-creator")
.as_deref()
Expand Down
7 changes: 2 additions & 5 deletions wacore/src/send.rs
Original file line number Diff line number Diff line change
Expand Up @@ -403,8 +403,6 @@ where
.await?
.is_some()
{
// Session exists under direct address, use it
jid_to_encryption_jid.insert(device_jid, device_jid.clone());
continue;
}

Expand Down Expand Up @@ -728,7 +726,7 @@ pub async fn prepare_dm_stanza<
..Default::default()
};

let own_devices_plaintext = MessageUtils::pad_message_v2(dsm.encode_to_vec());
let own_devices_plaintext = MessageUtils::encode_and_pad(&dsm);

let total_devices = all_devices.len();
let (recipient_devices, own_other_devices) =
Expand Down Expand Up @@ -1118,8 +1116,7 @@ pub async fn prepare_group_stanza<
}),
..Default::default()
};
let skdm_plaintext_to_encrypt =
MessageUtils::pad_message_v2(skdm_wrapper_msg.encode_to_vec());
let skdm_plaintext_to_encrypt = MessageUtils::encode_and_pad(&skdm_wrapper_msg);

// WA Web's GroupSkmsgJob wraps ensureE2ESessions in try/catch — logs error
// but does NOT rethrow. SKDM distribution failure must not prevent the group
Expand Down
1 change: 0 additions & 1 deletion wacore/src/types/events.rs
Original file line number Diff line number Diff line change
Expand Up @@ -695,7 +695,6 @@ pub struct Receipt {
pub message_ids: Vec<MessageId>,
pub timestamp: DateTime<Utc>,
pub r#type: ReceiptType,
pub message_sender: Jid,
}

#[derive(Debug, Clone, Serialize)]
Expand Down
Loading