diff --git a/examples/companion_radio/MyMesh.cpp b/examples/companion_radio/MyMesh.cpp index 9b6a56e2..74d6c89a 100644 --- a/examples/companion_radio/MyMesh.cpp +++ b/examples/companion_radio/MyMesh.cpp @@ -661,6 +661,7 @@ void MyMesh::begin(bool has_display) { _active_ble_pin = 0; #endif + resetContacts(); _store->loadContacts(this); addChannel("Public", PUBLIC_GROUP_PSK); // pre-configure Andy's public channel _store->loadChannels(this); @@ -1097,6 +1098,9 @@ void MyMesh::handleCmdFrame(size_t len) { if (_store->saveMainIdentity(identity)) { self_id = identity; writeOKFrame(); + // re-load contacts, to recalc shared secrets + resetContacts(); + _store->loadContacts(this); } else { writeErrFrame(ERR_CODE_FILE_IO_ERROR); } diff --git a/src/helpers/BaseChatMesh.h b/src/helpers/BaseChatMesh.h index 683af852..0e809c46 100644 --- a/src/helpers/BaseChatMesh.h +++ b/src/helpers/BaseChatMesh.h @@ -88,6 +88,8 @@ protected: memset(connections, 0, sizeof(connections)); } + void resetContacts() { num_contacts = 0; } + // 'UI' concepts, for sub-classes to implement virtual bool isAutoAddEnabled() const { return true; } virtual void onDiscoveredContact(ContactInfo& contact, bool is_new, uint8_t path_len, const uint8_t* path) = 0;