From b60c0da1dac86c97b3db22d8a96f58d75b0b9cab Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Fri, 19 Sep 2025 22:39:01 +0200 Subject: [PATCH] drop duplicate hops --- .../main/java/com/bitchat/android/mesh/PacketRelayManager.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/bitchat/android/mesh/PacketRelayManager.kt b/app/src/main/java/com/bitchat/android/mesh/PacketRelayManager.kt index 246960bf..5a1abee0 100644 --- a/app/src/main/java/com/bitchat/android/mesh/PacketRelayManager.kt +++ b/app/src/main/java/com/bitchat/android/mesh/PacketRelayManager.kt @@ -68,6 +68,11 @@ class PacketRelayManager(private val myPeerID: String) { // Source-based routing: if route is set and includes us, try targeted next-hop forwarding val route = relayPacket.route if (!route.isNullOrEmpty()) { + // Check for duplicate hops to prevent routing loops + if (route.map { it.toHexString() }.toSet().size < route.size) { + Log.w(TAG, "Packet with duplicate hops dropped") + return + } val myIdBytes = hexStringToPeerBytes(myPeerID) val index = route.indexOfFirst { it.contentEquals(myIdBytes) } if (index >= 0) {