neels has uploaded this change for review.
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.