• Ondřej Zajíček's avatar
    Fixes core state machine. · d6a836f8
    Ondřej Zajíček authored
    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?
    d6a836f8
neighbor.c 7.7 KB