Skip to content

Commit 77d02e8

Browse files
committed
* bug fix
1 parent d3ba89c commit 77d02e8

4 files changed

Lines changed: 6 additions & 2 deletions

File tree

examples/simple_repeater/MyMesh.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ bool MyMesh::isLooped(const mesh::Packet* packet, const uint8_t max_counters[])
414414
}
415415

416416
void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, uint8_t path_hash_size) {
417-
if (recv_pkt_region) { // if _request_ packet scope is known, send reply with same scope
417+
if (recv_pkt_region && !recv_pkt_region->isWildcard()) { // if _request_ packet scope is known, send reply with same scope
418418
TransportKey scope;
419419
if (region_map.getTransportKeysFor(*recv_pkt_region, &scope, 1) > 0) {
420420
sendFloodScoped(scope, packet, delay_millis, path_hash_size);

examples/simple_room_server/MyMesh.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ void MyMesh::sendFloodScoped(const TransportKey& scope, mesh::Packet* pkt, uint3
716716
}
717717

718718
void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, uint8_t path_hash_size) {
719-
if (recv_pkt_region) { // if _request_ packet scope is known, send reply with same scope
719+
if (recv_pkt_region && !recv_pkt_region->isWildcard()) { // if _request_ packet scope is known, send reply with same scope
720720
TransportKey scope;
721721
if (region_map.getTransportKeysFor(*recv_pkt_region, &scope, 1) > 0) {
722722
sendFloodScoped(scope, packet, delay_millis, path_hash_size);

src/helpers/CommonCLI.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,12 +948,14 @@ void CommonCLI::handleRegionCmd(char* command, char* reply) {
948948
if (strcmp(parts[2], "<null>") == 0) {
949949
_region_map->setDefaultRegion(NULL);
950950
_callbacks->onDefaultRegionChanged(NULL);
951+
_callbacks->saveRegions(); // persist in one atomic step
951952
sprintf(reply, " default scope is now <null>");
952953
} else {
953954
auto def = _region_map->findByNamePrefix(parts[2]);
954955
if (def) {
955956
_region_map->setDefaultRegion(def);
956957
_callbacks->onDefaultRegionChanged(def);
958+
_callbacks->saveRegions(); // persist in one atomic step
957959
sprintf(reply, " default scope is now %s", def->name);
958960
} else {
959961
strcpy(reply, "Err - unknown region");

src/helpers/RegionMap.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ struct RegionEntry {
1616
uint16_t parent;
1717
uint8_t flags;
1818
char name[31];
19+
20+
bool isWildcard() const { return id == 0; }
1921
};
2022

2123
class RegionMap {

0 commit comments

Comments
 (0)