aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2019-10-21 03:07:25 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2019-11-28 02:52:55 +0100
commitbde605dfc574726f2e776c8230e47a5b25e63866 (patch)
tree655d7624d21eb94c8db85909a0a95986761bfec9
parent00a476bc244845352505ed2b8952bf33c442c3e0 (diff)
fix incoming call while Paging
Do not free the CC transaction when an MT subscriber is already being Paged. Instead, invoke another paging request, which paging.c will correctly add to the list of pending paging response callbacks to run. A ttcn3 test is linked in the related patch (s.b.). Related: OS#4240 Related: Ieeae6322d4e80893ea3408c6b74bf8e32bea8e46 Change-Id: Idd4537b5f4817d17e5c87d9a93775a32aee0e7be
-rw-r--r--src/libmsc/gsm_04_08_cc.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/src/libmsc/gsm_04_08_cc.c b/src/libmsc/gsm_04_08_cc.c
index 4e604e5dd..8cfb6117d 100644
--- a/src/libmsc/gsm_04_08_cc.c
+++ b/src/libmsc/gsm_04_08_cc.c
@@ -1935,19 +1935,11 @@ static int mncc_tx_to_gsm_cc(struct gsm_network *net, const union mncc_msg *msg)
* log it now. */
LOG_TRANS_CAT(trans, DMNCC, LOGL_DEBUG, "rx %s\n", get_mncc_name(msg->msg_type));
- if (vsub->cs.is_paging) {
- LOG_TRANS(trans, LOGL_DEBUG,
- "rx %s, subscriber not yet connected, paging already started\n",
- get_mncc_name(msg->msg_type));
- vlr_subscr_put(vsub, __func__);
- trans_free(trans);
- return 0;
- }
-
/* store setup information until paging succeeds */
memcpy(&trans->cc.msg, data, sizeof(struct gsm_mncc));
- /* Request a channel */
+ /* Request a channel. If Paging already started, paging_request_start() will append the new
+ * trans to the already ongoing Paging. */
trans->paging_request = paging_request_start(vsub, PAGING_CAUSE_CALL_CONVERSATIONAL,
cc_paging_cb, trans, "MNCC: establish call");
if (!trans->paging_request) {