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:
Krzysztof Kopyściński
2021-11-10 06:24:00 +01:00
committed by Krzysztof Kopyściński
parent f757df8e70
commit 6617c29704
+3 -3
View File
@@ -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;
}