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)  | 
