* bug fix
This commit is contained in:
@@ -414,7 +414,7 @@ bool MyMesh::isLooped(const mesh::Packet* packet, const uint8_t max_counters[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, uint8_t path_hash_size) {
|
void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, uint8_t path_hash_size) {
|
||||||
if (recv_pkt_region) { // if _request_ packet scope is known, send reply with same scope
|
if (recv_pkt_region && !recv_pkt_region->isWildcard()) { // if _request_ packet scope is known, send reply with same scope
|
||||||
TransportKey scope;
|
TransportKey scope;
|
||||||
if (region_map.getTransportKeysFor(*recv_pkt_region, &scope, 1) > 0) {
|
if (region_map.getTransportKeysFor(*recv_pkt_region, &scope, 1) > 0) {
|
||||||
sendFloodScoped(scope, packet, delay_millis, path_hash_size);
|
sendFloodScoped(scope, packet, delay_millis, path_hash_size);
|
||||||
|
|||||||
@@ -716,7 +716,7 @@ void MyMesh::sendFloodScoped(const TransportKey& scope, mesh::Packet* pkt, uint3
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, uint8_t path_hash_size) {
|
void MyMesh::sendFloodReply(mesh::Packet* packet, unsigned long delay_millis, uint8_t path_hash_size) {
|
||||||
if (recv_pkt_region) { // if _request_ packet scope is known, send reply with same scope
|
if (recv_pkt_region && !recv_pkt_region->isWildcard()) { // if _request_ packet scope is known, send reply with same scope
|
||||||
TransportKey scope;
|
TransportKey scope;
|
||||||
if (region_map.getTransportKeysFor(*recv_pkt_region, &scope, 1) > 0) {
|
if (region_map.getTransportKeysFor(*recv_pkt_region, &scope, 1) > 0) {
|
||||||
sendFloodScoped(scope, packet, delay_millis, path_hash_size);
|
sendFloodScoped(scope, packet, delay_millis, path_hash_size);
|
||||||
|
|||||||
@@ -948,12 +948,14 @@ void CommonCLI::handleRegionCmd(char* command, char* reply) {
|
|||||||
if (strcmp(parts[2], "<null>") == 0) {
|
if (strcmp(parts[2], "<null>") == 0) {
|
||||||
_region_map->setDefaultRegion(NULL);
|
_region_map->setDefaultRegion(NULL);
|
||||||
_callbacks->onDefaultRegionChanged(NULL);
|
_callbacks->onDefaultRegionChanged(NULL);
|
||||||
|
_callbacks->saveRegions(); // persist in one atomic step
|
||||||
sprintf(reply, " default scope is now <null>");
|
sprintf(reply, " default scope is now <null>");
|
||||||
} else {
|
} else {
|
||||||
auto def = _region_map->findByNamePrefix(parts[2]);
|
auto def = _region_map->findByNamePrefix(parts[2]);
|
||||||
if (def) {
|
if (def) {
|
||||||
_region_map->setDefaultRegion(def);
|
_region_map->setDefaultRegion(def);
|
||||||
_callbacks->onDefaultRegionChanged(def);
|
_callbacks->onDefaultRegionChanged(def);
|
||||||
|
_callbacks->saveRegions(); // persist in one atomic step
|
||||||
sprintf(reply, " default scope is now %s", def->name);
|
sprintf(reply, " default scope is now %s", def->name);
|
||||||
} else {
|
} else {
|
||||||
strcpy(reply, "Err - unknown region");
|
strcpy(reply, "Err - unknown region");
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ struct RegionEntry {
|
|||||||
uint16_t parent;
|
uint16_t parent;
|
||||||
uint8_t flags;
|
uint8_t flags;
|
||||||
char name[31];
|
char name[31];
|
||||||
|
|
||||||
|
bool isWildcard() const { return id == 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class RegionMap {
|
class RegionMap {
|
||||||
|
|||||||
Reference in New Issue
Block a user