mirror of https://gerrit.osmocom.org/libosmocore
gprs_ns2: prevent division by zero in load_sharing
Check if the NSE is alive before passing UNITDATA to the load sharing. Change-Id: I0e2a59bec9b72f74eb64510a2e1ad60486694a55 Fixes: OS#4996
This commit is contained in:
parent
9bbb703a95
commit
265a5ebac8
|
@ -365,9 +365,13 @@ static struct gprs_ns2_vc *ns2_load_sharing_modulor(
|
|||
uint32_t load_selector)
|
||||
{
|
||||
struct gprs_ns2_vc *tmp;
|
||||
uint32_t mod = (bvci + load_selector) % nse->nsvc_count;
|
||||
uint32_t mod;
|
||||
uint32_t i = 0;
|
||||
|
||||
if (nse->nsvc_count == 0)
|
||||
return NULL;
|
||||
|
||||
mod = (bvci + load_selector) % nse->nsvc_count;
|
||||
llist_for_each_entry(tmp, &nse->nsvc, list) {
|
||||
if (!ns2_vc_is_unblocked(tmp))
|
||||
continue;
|
||||
|
@ -457,6 +461,9 @@ int gprs_ns2_recv_prim(struct gprs_ns2_inst *nsi, struct osmo_prim_hdr *oph)
|
|||
if (!nse)
|
||||
return -EINVAL;
|
||||
|
||||
if (!nse->alive)
|
||||
return 0;
|
||||
|
||||
nsvc = ns2_load_sharing(nse, bvci, nsp->u.unitdata.link_selector);
|
||||
|
||||
/* TODO: send a status primitive back */
|
||||
|
|
Loading…
Reference in New Issue