diff options
author | Sylvain Munaut <tnt@246tNt.com> | 2009-12-19 12:38:10 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-01-07 10:37:40 +0100 |
commit | ef24dff2a22c907f08a24b19773dde5ce20ba5d6 (patch) | |
tree | 82ef2b092b47ae2d5db6b198fd34ff881a9d9e63 /openbsc/src | |
parent | 65542c7f597c5c94b16904108056d3c99de1a8cc (diff) |
[signal] Differentiate paging success from expiration in SS_PAGING
This is useful information to know and actually fixes a segfault
in rllp.c where lchan is accessed even tough it could be NULL in
case of failure.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'openbsc/src')
-rw-r--r-- | openbsc/src/gsm_04_08_utils.c | 2 | ||||
-rw-r--r-- | openbsc/src/paging.c | 2 | ||||
-rw-r--r-- | openbsc/src/rrlp.c | 8 |
3 files changed, 5 insertions, 7 deletions
diff --git a/openbsc/src/gsm_04_08_utils.c b/openbsc/src/gsm_04_08_utils.c index a18427788..d5785f971 100644 --- a/openbsc/src/gsm_04_08_utils.c +++ b/openbsc/src/gsm_04_08_utils.c @@ -490,7 +490,7 @@ int gsm48_handle_paging_resp(struct msgb *msg, struct gsm_subscriber *subscr) bts->network->stats.paging.completed++; - dispatch_signal(SS_PAGING, S_PAGING_COMPLETED, &sig_data); + dispatch_signal(SS_PAGING, S_PAGING_SUCCEEDED, &sig_data); /* Stop paging on the bts we received the paging response */ paging_request_stop(msg->trx->bts, subscr, msg->lchan); diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c index b5dc2d052..91de70241 100644 --- a/openbsc/src/paging.c +++ b/openbsc/src/paging.c @@ -214,7 +214,7 @@ static void paging_T3113_expired(void *data) counter_inc(req->bts->network->stats.paging.expired); - dispatch_signal(SS_PAGING, S_PAGING_COMPLETED, &sig_data); + dispatch_signal(SS_PAGING, S_PAGING_EXPIRED, &sig_data); if (cbfn) cbfn(GSM_HOOK_RR_PAGING, GSM_PAGING_EXPIRED, NULL, NULL, cbfn_param); diff --git a/openbsc/src/rrlp.c b/openbsc/src/rrlp.c index d4665d570..35044518c 100644 --- a/openbsc/src/rrlp.c +++ b/openbsc/src/rrlp.c @@ -89,14 +89,12 @@ static int paging_sig_cb(unsigned int subsys, unsigned int signal, struct paging_signal_data *psig_data = signal_data; switch (signal) { - case S_PAGING_COMPLETED: - /* paging might have "completed' unsucessfully, - * in this case we don't have a lchan */ - if (!psig_data->lchan) - break; + case S_PAGING_SUCCEEDED: /* A subscriber has attached. */ send_rrlp_req(psig_data->lchan); break; + case S_PAGING_EXPIRED: + break; } return 0; } |