Fixes nasty bug in BFD.
When a BFD session is removed while being scheduled for notification, the session stays in notify list and is removed twice, which leads to a strange crash after a while.
This commit is contained in:
parent
60442b1698
commit
864f52a5f4
1 changed files with 7 additions and 0 deletions
|
@ -477,8 +477,15 @@ bfd_remove_session(struct bfd_proto *p, struct bfd_session *s)
|
|||
{
|
||||
ip_addr ip = s->addr;
|
||||
|
||||
/* Caller should ensure that request list is empty */
|
||||
|
||||
birdloop_enter(p->loop);
|
||||
|
||||
/* Remove session from notify list if scheduled for notification */
|
||||
/* No need for bfd_lock_sessions(), we are already protected by birdloop_enter() */
|
||||
if (NODE_VALID(&s->n))
|
||||
rem_node(&s->n);
|
||||
|
||||
bfd_free_iface(s->ifa);
|
||||
|
||||
rfree(s->tx_timer);
|
||||
|
|
Loading…
Reference in a new issue