diff options
Diffstat (limited to 'hicn-light/src/hicn/strategies/loadBalancer.c')
-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)); |