mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-08-30 22:00:02 +00:00
host/mesh: Model extensions walk stops before last model
When reaching the last model in the circular extension linked list, the walker would abandon the walk before checking the last model. This makes us skip models when checking the subscription list, potentially causing incoming messages to be wrongfully ignored. This is port of cd89f4239368b106fbfab9555cf445fbc00203a2
This commit is contained in:
committed by
Krzysztof Kopyściński
parent
f757df8e70
commit
6617c29704
@@ -819,11 +819,11 @@ void bt_mesh_model_extensions_walk(struct bt_mesh_model *model,
|
||||
#else
|
||||
struct bt_mesh_model *it;
|
||||
|
||||
if (model->next == NULL) {
|
||||
(void)cb(model, user_data);
|
||||
if (cb(model, user_data) == BT_MESH_WALK_STOP || !model->next) {
|
||||
return;
|
||||
}
|
||||
for (it = model; (it != NULL) && (it->next != model); it = it->next) {
|
||||
/* List is circular. Step through all models until we reach the start: */
|
||||
for (it = model->next; it != model; it = it->next) {
|
||||
if (cb(it, user_data) == BT_MESH_WALK_STOP) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user