aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gsm_04_11.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2009-08-15 03:16:17 +0200
committerHarald Welte <laforge@gnumonks.org>2009-08-15 03:16:17 +0200
commite903edf5801eb63f65138408c7b5d7c2fa22a231 (patch)
tree3d7d0da06a8f2af96f85c4f8126bf02de6ade132 /openbsc/src/gsm_04_11.c
parent15920de8ce9b9199f4ef4ad568b204af0f34b2f0 (diff)
provide return code from paging_request() function
this enables the caller to detect if the paging request was rejected by the paging layer, especially in case it is already paging this very subscriber. In the case of SMS / 04.11, we used to have a memory leak of struct gsm_sms's, since we would only free them from the paging succeeded/expired callbacks.
Diffstat (limited to 'openbsc/src/gsm_04_11.c')
-rw-r--r--openbsc/src/gsm_04_11.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index 2994d7207..8ac596d7e 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -1025,6 +1025,7 @@ int gsm411_send_sms_subscr(struct gsm_subscriber *subscr,
struct gsm_sms *sms)
{
struct gsm_lchan *lchan;
+ int rc;
/* check if we already have an open lchan to the subscriber.
* if yes, send the SMS this way */
@@ -1034,8 +1035,10 @@ int gsm411_send_sms_subscr(struct gsm_subscriber *subscr,
rll_ind_cb, sms);
/* if not, we have to start paging */
- paging_request(subscr->net, subscr, RSL_CHANNEED_SDCCH,
- paging_cb_send_sms, sms);
+ rc = paging_request(subscr->net, subscr, RSL_CHANNEED_SDCCH,
+ paging_cb_send_sms, sms);
+ if (rc < 0)
+ sms_free(sms);
return 0;
}