diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2025-04-11 08:39:59 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-11 08:39:59 -0400 |
| commit | 94203c4774564e0cf638a481f76ee5a399b28063 (patch) | |
| tree | 922cfae7b44a2690d3acbe8e129470143e562c24 | |
| parent | 84e46f6087bda181d387189792cb380bd212560e (diff) | |
| parent | 101b13b7b56028daaaa852bf466ba2846a84eff4 (diff) | |
Merge pull request #18639 from FRRouting/mergify/bp/stable/9.1/pr-15716stable/9.1
isisd: Fix memory leaks when the transition of neighbor state from non-UP to DOWN (backport #15716)
| -rw-r--r-- | isisd/isis_adjacency.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index cba1b91fae..32d3466f5c 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -358,12 +358,15 @@ void isis_adj_state_change(struct isis_adjacency **padj, * purposes */ adj->last_flap = time(NULL); adj->flaps++; - } else if (old_state == ISIS_ADJ_UP) { - circuit->adj_state_changes++; + } else { + if (old_state == ISIS_ADJ_UP) { + circuit->adj_state_changes++; - circuit->upadjcount[level - 1]--; - if (circuit->upadjcount[level - 1] == 0) - isis_tx_queue_clean(circuit->tx_queue); + circuit->upadjcount[level - 1]--; + if (circuit->upadjcount[level - 1] == 0) + isis_tx_queue_clean( + circuit->tx_queue); + } if (new_state == ISIS_ADJ_DOWN) { listnode_delete( @@ -409,10 +412,13 @@ void isis_adj_state_change(struct isis_adjacency **padj, master, send_l2_csnp, circuit, 0, &circuit->t_send_csnp[1]); } - } else if (old_state == ISIS_ADJ_UP) { - circuit->upadjcount[level - 1]--; - if (circuit->upadjcount[level - 1] == 0) - isis_tx_queue_clean(circuit->tx_queue); + } else { + if (old_state == ISIS_ADJ_UP) { + circuit->upadjcount[level - 1]--; + if (circuit->upadjcount[level - 1] == 0) + isis_tx_queue_clean( + circuit->tx_queue); + } if (new_state == ISIS_ADJ_DOWN) { if (adj->circuit->u.p2p.neighbor == adj) |
