[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>
This commit is contained in:
parent
65542c7f59
commit
ef24dff2a2
|
@ -45,7 +45,8 @@ enum signal_subsystems {
|
|||
|
||||
/* SS_PAGING signals */
|
||||
enum signal_paging {
|
||||
S_PAGING_COMPLETED,
|
||||
S_PAGING_SUCCEEDED,
|
||||
S_PAGING_EXPIRED,
|
||||
};
|
||||
|
||||
/* SS_SMS signals */
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue