Skip to content

Fix race condition causing notification to be lost

The problem is that we twicing a snapshot of the BBFDM parameters:

  • When processing an update of list_value_change list (check_value_change).
  • When committing params to the filesystem (cwmp_update_enabled_notify_file).

This is because underneath these two functions there are independent calls of create_list_param_leaf_notify as well as cwmp_get_parameter_values, which end up calling icwmp_ubus_invoke getter twice for each parameter.

Thus, if an update occurs between these two icwmp_ubus_invoke calls, it results the param being committed to the filesystem without adding it to list_value_change, which results in that it being misinterpreted as already having been notified by the next check_value_change call.

Merge request reports