diff options
author | Sylvain Munaut <tnt@246tNt.com> | 2009-12-24 13:33:51 +0100 |
---|---|---|
committer | Harald Welte <laforge@netfilter.org> | 2009-12-24 15:10:06 +0100 |
commit | d6c35f6e8aee512830dac4792a3fbed4853349bb (patch) | |
tree | 31247028743b5f40c7ec05a53ba1ff236cdd5a7f /openbsc/src/gsm_04_11.c | |
parent | c4052cf9a8c9c9cf3d376db9712b465019779083 (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.c | 10 |
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; |