diff options
author | Jordan Augé <jordan.auge@cisco.com> | 2019-10-28 15:44:42 +0100 |
---|---|---|
committer | Mauro Sardara <msardara@cisco.com> | 2019-10-30 14:46:57 +0000 |
commit | 5fca7ef4838c6a8aede8a5e338940804e8e363f7 (patch) | |
tree | 341257400aaa3dd428340418a2c1a808bdbbb01c /hicn-light/src/hicn/strategies | |
parent | 3d674d504306489c4d845260f058ce44aa083f33 (diff) |
[HICN-363] Fix memory leaks
Change-Id: I7617becdb520f20caca341be11fbb8c1054de021
Signed-off-by: Jordan Augé <jordan.auge@cisco.com>
Diffstat (limited to 'hicn-light/src/hicn/strategies')
-rw-r--r-- | hicn-light/src/hicn/strategies/loadBalancer.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/hicn-light/src/hicn/strategies/loadBalancer.c b/hicn-light/src/hicn/strategies/loadBalancer.c index ca9d34289..e3f377791 100644 --- a/hicn-light/src/hicn/strategies/loadBalancer.c +++ b/hicn-light/src/hicn/strategies/loadBalancer.c @@ -323,6 +323,10 @@ static void _strategyLoadBalancer_RemoveNexthop(StrategyImpl *strategy, PARCUnsigned *cid = parcUnsigned_Create(connectionId); if (parcHashMap_Contains(lb->strategy_state, cid)) { + StrategyNexthopState *state = + (StrategyNexthopState *)parcHashMap_Get(lb->strategy_state, cid); + parcObject_Release((void**)&state); + parcHashMap_Remove(lb->strategy_state, cid); #ifndef WITH_POLICY numberSet_Remove(lb->nexthops, connectionId); @@ -341,6 +345,15 @@ static void _strategyLoadBalancer_ImplDestroy(StrategyImpl **strategyPtr) { StrategyImpl *impl = *strategyPtr; StrategyLoadBalancer *strategy = (StrategyLoadBalancer *)impl->context; + PARCIterator *it = parcHashMap_CreateKeyIterator(strategy->strategy_state); + while (parcIterator_HasNext(it)) { + PARCUnsigned *cid = parcIterator_Next(it); + StrategyNexthopState *state = + (StrategyNexthopState *)parcHashMap_Get(strategy->strategy_state, cid); + parcObject_Release((void**)&state); + } + parcIterator_Release(&it); + parcHashMap_Release(&(strategy->strategy_state)); #ifndef WITH_POLICY numberSet_Release(&(strategy->nexthops)); |