diff options
author | michele papalini <micpapal@cisco.com> | 2019-10-10 13:44:10 +0200 |
---|---|---|
committer | michele papalini <micpapal@cisco.com> | 2019-10-10 13:44:10 +0200 |
commit | d0c23b111015ed645272678bc229e1059337408f (patch) | |
tree | a60e55099d750c0dd92bef209299fec4215eef47 /hicn-light/src/hicn/strategies | |
parent | e3d49850d80d6f603180cd5bd5ca0bfc0730f54a (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.c | 11 |
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, |