diff --git a/src/mesh/NodeDB.cpp b/src/mesh/NodeDB.cpp index 9a19f98a8..477629342 100644 --- a/src/mesh/NodeDB.cpp +++ b/src/mesh/NodeDB.cpp @@ -1566,7 +1566,8 @@ bool NodeDB::updateUser(uint32_t nodeId, meshtastic_User &p, uint8_t channelInde printBytes("Incoming Pubkey: ", p.public_key.bytes, 32); // Alert the user if a remote node is advertising public key that matches our own - if (owner.public_key.size == 32 && memcmp(p.public_key.bytes, owner.public_key.bytes, 32) == 0) { + if (owner.public_key.size == 32 && memcmp(p.public_key.bytes, owner.public_key.bytes, 32) == 0 && !duplicateWarned) { + duplicateWarned = true; char warning[] = "Remote device %s has advertised your public key. This may indicate a low-entropy key. You may need " "to regenerate your public keys."; LOG_WARN(warning, p.long_name); diff --git a/src/mesh/NodeDB.h b/src/mesh/NodeDB.h index 0464ae535..f03cdd6b6 100644 --- a/src/mesh/NodeDB.h +++ b/src/mesh/NodeDB.h @@ -258,6 +258,7 @@ class NodeDB int restoreWhat = SEGMENT_CONFIG | SEGMENT_MODULECONFIG | SEGMENT_DEVICESTATE | SEGMENT_CHANNELS); private: + bool duplicateWarned = false; uint32_t lastNodeDbSave = 0; // when we last saved our db to flash uint32_t lastBackupAttempt = 0; // when we last tried a backup automatically or manually /// Find a node in our DB, create an empty NodeInfoLite if missing