At this point it is a bit challenging to conclude what is wrong :)
The other modules, acc_diameter
, acc_raduis
and acc_json
are using the acc_engine
interface and the logic in the acc module is slightly different because it is using functions like acc_run_engines
In these modules it was assumed that acc_flag
and missed_flag
should be stored bit shifted, because of the fact is_eng_acc_on
was expecting already bit shifted values.
However the main acc module is not bit shifting them, so this is one thing not making sense.
(Problem A*) Back to normal ACC module, consider the following combination found in acc_logic.c
:
flags_to_reset |= log_missed_flag;
+ reset_acc_flag(req, flags_to_reset);
log_missed_flag
is what ? (depending on the module it can be 1 or 2)
1: bit shifted, then reset_acc_flag
is not compatible
#define reset_acc_flag(_rq,_flag) (resetflag((_rq), (_flag)))
2: no bit shifted, then we need to use the assignment operator and we can not keep track of multiple flags.
In fact thanks to the review, I just realized this is not good enough for fixing normal ACC module behavior, we need to keep track of multiple flags to reset until the very end of on_missed
in case the same flag is used for db_missed_flag
and log_missed_flag
, I will revisit my patch.
When I look at acc_mod.c
and when I debug the running program.
log_missed_flag
and db_missed_flag
are not storing bit shifted values, this is why I think we need to align the acc_engine and modules using it with the default behavior.
The main acc module logic will also be fixed at the same time since the code should not always be working well as describer in (A*)
I hope I am not getting confused :)
I will definitely revisit the patch knowing it is not good enough.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.