mirror of
https://github.com/permissionlesstech/bitchat.git
synced 2026-07-25 16:05:19 +00:00
Fix peer discovery issue by enabling announce relay
- Increase announce TTL from 1 to 3 to allow relaying - Add relay logic for announce packets (was missing\!) - This fixes the issue where peers can chat but don't see each other - Announces now propagate through the mesh properly
This commit is contained in:
@@ -371,7 +371,7 @@ class BluetoothMeshService: NSObject {
|
|||||||
|
|
||||||
let announcePacket = BitchatPacket(
|
let announcePacket = BitchatPacket(
|
||||||
type: MessageType.announce.rawValue,
|
type: MessageType.announce.rawValue,
|
||||||
ttl: 1,
|
ttl: 3, // Increase TTL so announce reaches all peers
|
||||||
senderID: myPeerID,
|
senderID: myPeerID,
|
||||||
payload: Data(vm.nickname.utf8)
|
payload: Data(vm.nickname.utf8)
|
||||||
)
|
)
|
||||||
@@ -654,7 +654,7 @@ class BluetoothMeshService: NSObject {
|
|||||||
|
|
||||||
let packet = BitchatPacket(
|
let packet = BitchatPacket(
|
||||||
type: MessageType.announce.rawValue,
|
type: MessageType.announce.rawValue,
|
||||||
ttl: 1,
|
ttl: 3, // Allow relay for better reach
|
||||||
senderID: myPeerID,
|
senderID: myPeerID,
|
||||||
payload: Data(vm.nickname.utf8)
|
payload: Data(vm.nickname.utf8)
|
||||||
)
|
)
|
||||||
@@ -1410,6 +1410,18 @@ class BluetoothMeshService: NSObject {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Relay announce if TTL > 0
|
||||||
|
if packet.ttl > 1 {
|
||||||
|
var relayPacket = packet
|
||||||
|
relayPacket.ttl -= 1
|
||||||
|
|
||||||
|
// Add small delay to prevent collision
|
||||||
|
let delay = Double.random(in: 0.1...0.3)
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + delay) { [weak self] in
|
||||||
|
self?.broadcastPacket(relayPacket)
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Failed to decode announce packet
|
// Failed to decode announce packet
|
||||||
}
|
}
|
||||||
@@ -1851,7 +1863,7 @@ extension BluetoothMeshService: CBPeripheralDelegate {
|
|||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
let announcePacket = BitchatPacket(
|
let announcePacket = BitchatPacket(
|
||||||
type: MessageType.announce.rawValue,
|
type: MessageType.announce.rawValue,
|
||||||
ttl: 1,
|
ttl: 3,
|
||||||
senderID: self.myPeerID,
|
senderID: self.myPeerID,
|
||||||
payload: Data(vm.nickname.utf8)
|
payload: Data(vm.nickname.utf8)
|
||||||
)
|
)
|
||||||
@@ -1868,7 +1880,7 @@ extension BluetoothMeshService: CBPeripheralDelegate {
|
|||||||
|
|
||||||
let announcePacket = BitchatPacket(
|
let announcePacket = BitchatPacket(
|
||||||
type: MessageType.announce.rawValue,
|
type: MessageType.announce.rawValue,
|
||||||
ttl: 1,
|
ttl: 3,
|
||||||
senderID: self.myPeerID,
|
senderID: self.myPeerID,
|
||||||
payload: Data(vm.nickname.utf8)
|
payload: Data(vm.nickname.utf8)
|
||||||
)
|
)
|
||||||
@@ -2013,7 +2025,7 @@ extension BluetoothMeshService: CBPeripheralManagerDelegate {
|
|||||||
guard let self = self else { return }
|
guard let self = self else { return }
|
||||||
let announcePacket = BitchatPacket(
|
let announcePacket = BitchatPacket(
|
||||||
type: MessageType.announce.rawValue,
|
type: MessageType.announce.rawValue,
|
||||||
ttl: 1,
|
ttl: 3,
|
||||||
senderID: self.myPeerID,
|
senderID: self.myPeerID,
|
||||||
payload: Data(vm.nickname.utf8)
|
payload: Data(vm.nickname.utf8)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user