neels has uploaded this change for review.

View Change

CM Serv Rej: do not crash on use count mismatch

We may issue a CM Service Reject also in obscure situations, where no CM
Service Request was permitted. In those cases, there will be no use
count. Do not crash then, just don't decrement.

Related: OS#5532
Change-Id: I2009df42d1f27ec0d011e22bfc46dbc17afe7239
---
M src/libmsc/gsm_04_08.c
1 file changed, 8 insertions(+), 1 deletion(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/16/27916/1
diff --git a/src/libmsc/gsm_04_08.c b/src/libmsc/gsm_04_08.c
index b5d46fd..0983295 100644
--- a/src/libmsc/gsm_04_08.c
+++ b/src/libmsc/gsm_04_08.c
@@ -1513,8 +1513,15 @@
enum gsm48_reject_value cause)
{
struct msc_a *msc_a = msc_conn_ref;
+ const char *use_token;
msc_gsm48_tx_mm_serv_rej(msc_a, cause);
- msc_a_put(msc_a, msc_a_cm_service_type_to_use(cm_service_type));
+
+ /* Normally, there is a use count to be removed by the CM Service Reject.
+ * There has been a report though of an error situation (OS#5532) where no use count remains to be removed here.
+ * In that case, do not crash osmo-msc, just don't decrement it. */
+ use_token = msc_a_cm_service_type_to_use(cm_service_type);
+ if (osmo_use_count_by(&msc_a->use_count, use_token))
+ msc_a_put(msc_a, use_token);
return 0;
}


To view, visit change 27916. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I2009df42d1f27ec0d011e22bfc46dbc17afe7239
Gerrit-Change-Number: 27916
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr@sysmocom.de>
Gerrit-MessageType: newchange