aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-08-09 19:07:00 +0200
committerHarald Welte <laforge@gnumonks.org>2009-08-09 19:07:00 +0200
commitee5ad1658214efce8fb9c92b7e6ad21484a66e55 (patch)
treed9c9b37af36e88afcc0c3f0879b6877f37bfd6f4 /openbsc
parentd11ea93e261c44d6171eebd7d268810a12e6fb74 (diff)
ensure we send the LOCATION UPDATE ACCEPT before issuing any signal
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/gsm_04_08.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index 3e307b15f..967e4ce58 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -364,11 +364,18 @@ static int gsm0408_authorize(struct gsm_lchan *lchan, struct msgb *msg)
u_int32_t tmsi;
if (authorize_subscriber(lchan->loc_operation, lchan->subscr)) {
+ int rc;
+
db_subscriber_alloc_tmsi(lchan->subscr);
- subscr_update(lchan->subscr, msg->trx->bts, GSM_SUBSCRIBER_UPDATE_ATTACHED);
tmsi = strtoul(lchan->subscr->tmsi, NULL, 10);
release_loc_updating_req(lchan);
- return gsm0408_loc_upd_acc(msg->lchan, tmsi);
+ rc = gsm0408_loc_upd_acc(msg->lchan, tmsi);
+ /* call subscr_update after putting the loc_upd_acc
+ * in the transmit queue, since S_SUBSCR_ATTACHED might
+ * trigger further action like SMS delivery */
+ subscr_update(lchan->subscr, msg->trx->bts,
+ GSM_SUBSCRIBER_UPDATE_ATTACHED);
+ return rc;
}
return 0;
@@ -1053,6 +1060,7 @@ int gsm0408_loc_upd_acc(struct gsm_lchan *lchan, u_int32_t tmsi)
ret = gsm48_sendmsg(msg, NULL);
+ /* send MM INFO with network name */
ret = gsm48_tx_mm_info(lchan);
return ret;