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.