aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gsm_04_11.c
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2009-12-24 13:33:51 +0100
committerHarald Welte <laforge@netfilter.org>2009-12-24 15:10:06 +0100
commitd6c35f6e8aee512830dac4792a3fbed4853349bb (patch)
tree31247028743b5f40c7ec05a53ba1ff236cdd5a7f /openbsc/src/gsm_04_11.c
parentc4052cf9a8c9c9cf3d376db9712b465019779083 (diff)
gsm_04_11: Release SMS transaction only after starting next one.
This ensures that we don't re-use the same transaction ID. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Diffstat (limited to 'openbsc/src/gsm_04_11.c')
-rw-r--r--openbsc/src/gsm_04_11.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/openbsc/src/gsm_04_11.c b/openbsc/src/gsm_04_11.c
index d4572ca18..c3a49f399 100644
--- a/openbsc/src/gsm_04_11.c
+++ b/openbsc/src/gsm_04_11.c
@@ -752,14 +752,16 @@ static int gsm411_rx_rp_ack(struct msgb *msg, struct gsm_trans *trans,
sms_free(sms);
trans->sms.sms = NULL;
- /* free the transaction here */
- trans_free(trans);
-
/* check for more messages for this subscriber */
sms = db_sms_get_unsent_for_subscr(msg->lchan->subscr);
if (sms)
gsm411_send_sms_lchan(msg->lchan, sms);
- else
+
+ /* free the transaction here */
+ trans_free(trans);
+
+ /* release channel if done */
+ if (!sms)
rsl_release_request(msg->lchan, trans->sms.link_id);
return 0;