diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2008-12-08 12:24:55 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2008-12-08 12:24:55 +0100 |
commit | d6a836f8d673a117fd19136d24e98fa9bbc4b27e (patch) | |
tree | 5bb42645fe4dffef1b0495cb1fb83edf9022ce68 /misc/ips.c | |
parent | fbde6c39084637c2f3f4d31261a44dbf367958d1 (diff) | |
download | bird-d6a836f8d673a117fd19136d24e98fa9bbc4b27e.tar bird-d6a836f8d673a117fd19136d24e98fa9bbc4b27e.zip |
Fixes core state machine.
The core state machine was broken - it didn't free resources
in START -> DOWN transition and might freed resources after
UP -> STOP transition before protocol turned down. It leads
to deadlock on olock acquisition when lock was not freed
during previous stop.
The current behavior is that resources, allocated during
DOWN -> * transition, are freed in * -> DOWN transition,
and flushing (scheduled in UP -> *) just counteract
feeding (scheduled in * -> UP). Protocol fell down
when both flushing is done (if needed) and protocol
reports DOWN.
BTW, is thera a reason why neighbour cache item acquired
by protocol is not tracked by resource mechanism?
Diffstat (limited to 'misc/ips.c')
0 files changed, 0 insertions, 0 deletions