aboutsummaryrefslogtreecommitdiffstats
path: root/hicn-light/src/hicn/strategies
diff options
context:
space:
mode:
authormichele papalini <micpapal@cisco.com>2019-10-10 13:44:10 +0200
committermichele papalini <micpapal@cisco.com>2019-10-10 13:44:10 +0200
commitd0c23b111015ed645272678bc229e1059337408f (patch)
treea60e55099d750c0dd92bef209299fec4215eef47 /hicn-light/src/hicn/strategies
parente3d49850d80d6f603180cd5bd5ca0bfc0730f54a (diff)
[HICN-315] memory leaks in hicn-light
Signed-off-by: michele papalini <micpapal@cisco.com> Change-Id: I43f64d616fbbbc2b10b4a181529d087fb0afc56c
Diffstat (limited to 'hicn-light/src/hicn/strategies')
-rw-r--r--hicn-light/src/hicn/strategies/loadBalancer.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/hicn-light/src/hicn/strategies/loadBalancer.c b/hicn-light/src/hicn/strategies/loadBalancer.c
index b66de217e..ca9d34289 100644
--- a/hicn-light/src/hicn/strategies/loadBalancer.c
+++ b/hicn-light/src/hicn/strategies/loadBalancer.c
@@ -201,6 +201,7 @@ static NumberSet *_strategyLoadBalancer_LookupNexthop(
PARCUnsigned *cid = parcUnsigned_Create(numberSet_GetItem(nexthops, i));
const StrategyNexthopState *elem =
parcHashMap_Get(lb->strategy_state, cid);
+ parcUnsigned_Release(&cid);
if (!elem)
continue;
sum += strategyNexthopState_GetWeight(elem);
@@ -213,12 +214,15 @@ static NumberSet *_strategyLoadBalancer_LookupNexthop(
PARCUnsigned *cid = parcUnsigned_Create(numberSet_GetItem(nexthops, i));
const StrategyNexthopState *state =
parcHashMap_Get(lb->strategy_state, cid);
- if (!state)
- continue;
+ if (!state){
+ parcUnsigned_Release(&cid);
+ continue;
+ }
distance -= strategyNexthopState_GetWeight(state);
if (distance < 0) {
numberSet_Add(outList, parcUnsigned_GetUnsigned(cid));
_update_Stats(lb, (StrategyNexthopState *)state, true);
+ parcUnsigned_Release(&cid);
break;
}
}
@@ -296,19 +300,20 @@ static void _strategyLoadBalancer_resetState(StrategyImpl *strategy) {
static void _strategyLoadBalancer_AddNexthop(StrategyImpl *strategy,
unsigned connectionId) {
- StrategyNexthopState *state = strategyNexthopState_Create();
PARCUnsigned *cid = parcUnsigned_Create(connectionId);
StrategyLoadBalancer *lb = (StrategyLoadBalancer *)strategy->context;
if (!parcHashMap_Contains(lb->strategy_state, cid)) {
+ StrategyNexthopState *state = strategyNexthopState_Create();
parcHashMap_Put(lb->strategy_state, cid, state);
#ifndef WITH_POLICY
numberSet_Add(lb->nexthops, connectionId);
#endif /* WITH_POLICY */
_strategyLoadBalancer_resetState(strategy);
}
+ parcUnsigned_Release(&cid);
}
static void _strategyLoadBalancer_RemoveNexthop(StrategyImpl *strategy,