aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/strategies/loadBalancer.c
diff options
context:
space:
mode:
Diffstat (limited to 'hicn-light/src/hicn/strategies/loadBalancer.c')
-rw-r--r--hicn-light/src/hicn/strategies/loadBalancer.c13
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));