diff --git a/src/Mesh.cpp b/src/Mesh.cpp index 383df6c1b4..ee1b4c899e 100644 --- a/src/Mesh.cpp +++ b/src/Mesh.cpp @@ -348,7 +348,7 @@ DispatcherAction Mesh::onRecvPacket(Packet* pkt) { break; } case PAYLOAD_TYPE_RAW_CUSTOM: { - if (pkt->isRouteDirect() && !_tables->hasSeen(pkt)) { + if (pkt->isRouteDirect() && !_tables->wasSeen(pkt)) { _tables->markSeen(pkt); onRawDataRecv(pkt); //action = routeRecvPacket(pkt); don't flood route these (yet) @@ -796,4 +796,4 @@ void Mesh::sendZeroHop(Packet* packet, uint16_t* transport_codes, uint32_t delay sendPacket(packet, 0, delay_millis); } -} \ No newline at end of file +} diff --git a/src/helpers/SimpleMeshTables.h b/src/helpers/SimpleMeshTables.h index 2e80927c92..9bc07e3d2f 100644 --- a/src/helpers/SimpleMeshTables.h +++ b/src/helpers/SimpleMeshTables.h @@ -36,7 +36,7 @@ class SimpleMeshTables : public mesh::MeshTables { } #endif - bool hasSeen(const mesh::Packet* packet) override { + bool wasSeen(const mesh::Packet* packet) override { uint8_t hash[MAX_HASH_SIZE]; // ACK packets receive dedicated deduplication for three reasons: // @@ -73,7 +73,7 @@ class SimpleMeshTables : public mesh::MeshTables { return false; } - packet->calculatePacketHash(hash); + memcpy(hash, packet->calculatePacketHash(), sizeof(hash)); const uint8_t* sp = _hashes; for (int i = 0; i < MAX_PACKET_HASHES; i++, sp += MAX_HASH_SIZE) { @@ -94,7 +94,7 @@ class SimpleMeshTables : public mesh::MeshTables { void markSeen(const mesh::Packet* packet) override { uint8_t hash[MAX_HASH_SIZE]; - packet->calculatePacketHash(hash); + memcpy(hash, packet->calculatePacketHash(), sizeof(hash)); memcpy(&_hashes[_next_idx * MAX_HASH_SIZE], hash, MAX_HASH_SIZE); _next_idx = (_next_idx + 1) % MAX_PACKET_HASHES; }