diff options
| author | Russ White <russ@riw.us> | 2024-07-02 07:25:51 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-02 07:25:51 -0400 |
| commit | 63924c9245f8c64e0bd6897b02ffd60ed9e91699 (patch) | |
| tree | afc00d32a7f0e7a4e08a295b34760408d3f258a7 /isisd | |
| parent | 09959645a3e55a0e048861433fedb4e32d930e12 (diff) | |
| parent | 5009f7539ad6bf496158499917dcf3f7ab760753 (diff) | |
Merge pull request #15716 from zhou-run/202404092101
isisd: Fix memory leaks when the transition of neighbor state from non-UP to DOWN
Diffstat (limited to 'isisd')
| -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 430bee92bf..b81a0cc2f0 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) |
