From 7417c651e3ab14b61121fd357cf2489b4ef69291 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Tue, 22 Jul 2025 01:22:43 +0200 Subject: [PATCH] wip ack --- .../android/mesh/BluetoothMeshService.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt b/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt index 22e283fc..86bbf475 100644 --- a/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt +++ b/app/src/main/java/com/bitchat/android/mesh/BluetoothMeshService.kt @@ -526,21 +526,30 @@ class BluetoothMeshService(private val context: Context) { ) try { + // TODO: THIS FORMAT FOR DELIVERY ACKS SHOULD BE DEPRECATED val ackData = ack.encode() ?: return + val typeMarker = MessageType.DELIVERY_ACK.value.toByte() + val payloadWithMarker = byteArrayOf(typeMarker) + ackData + val encryptedPayload = securityManager.encryptForPeer(payloadWithMarker, senderPeerID) + + if (encryptedPayload == null) { + Log.w(TAG, "Failed to encrypt delivery ACK for $senderPeerID") + return + } // Create inner packet with the delivery ACK data - val innerPacket = BitchatPacket( - type = MessageType.DELIVERY_ACK.value, + val packet = BitchatPacket( + type = MessageType.NOISE_ENCRYPTED.value, senderID = hexStringToByteArray(myPeerID), recipientID = hexStringToByteArray(senderPeerID), timestamp = System.currentTimeMillis().toULong(), - payload = ackData, + payload = encryptedPayload, signature = null, ttl = 3u ) // Use the new encrypt and broadcast function - encryptAndBroadcastNoisePacket(innerPacket, senderPeerID) + connectionManager.broadcastPacket(RoutedPacket(packet)) } catch (e: Exception) { Log.e(TAG, "Failed to send delivery ACK: ${e.message}")