]> git.ipfire.org Git - thirdparty/bird.git/commit
Fixes core state machine.
authorOndrej Zajicek <santiago@crfreenet.org>
Mon, 8 Dec 2008 11:24:55 +0000 (12:24 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Mon, 8 Dec 2008 11:24:55 +0000 (12:24 +0100)
commitd6a836f8d673a117fd19136d24e98fa9bbc4b27e
tree5bb42645fe4dffef1b0495cb1fb83edf9022ce68
parentfbde6c39084637c2f3f4d31261a44dbf367958d1
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?
nest/neighbor.c
nest/proto.c