Attention is currently required from: laforge, pespin, fixeria, keith, dexter.
neels has posted comments on this change. ( 
https://gerrit.osmocom.org/c/osmo-msc/+/28509 )

Change subject: Change CC_CAUSE returned on unanswered MT Call
......................................................................


Patch Set 1: Code-Review+1

(1 comment)

File src/libmsc/gsm_04_08_cc.c:

https://gerrit.osmocom.org/c/osmo-msc/+/28509/comment/4cd300a7_318ddd36
PS1, Line 281:                                   (trans->cc.state == 
GSM_CSTATE_CALL_RECEIVED) ?
> In adding this check, I should point out that I do not know what other CC 
> state is possible when we  […]
related: the cc state transitioning was written a very long time ago, before we 
had osmo_fsm. Specially for inter-MSC HO i implemented a new "proper" FSM for 
CC via MNCC in 2018, in mncc_fsm.[hc], because it was not possible to use the 
older cc implementation for what inter-msc requires. It is well possible and 
loosely intended to replace the old cc implementation with this new mncc_fsm (i 
wrote that intention into the comment on top of mncc_call.c). IMO it would 
clarify things and have "proper" state transition checking and so forth. Given 
the relatively low attention to osmo-msc in the past years the cc refactoring 
hasn't happened, and other things are more pressing, it doesn't seem to be 
happening any time soon. So until then we're left with figuring out the old cc 
implementation that osmo-msc still uses in the usual voice call scenarios. So:

It seems to me that you have already figured out at least one case where 
sending USER_NOTRESPOND makes more sense, and i trust you with that judgement.

I think this patch is fine, but if you would want to limit this cause to mgw X2 
expiry:
in call_leg.c, in call_leg_fsm_timer_cb(), you could detect the T that expired:

  if (fi->T == -2) ...

the usual pattern we use is to store state about whether a cause value has 
already been determined, for example add trans.cc.release_cause, and here use 
that if it is nonzero:

  trans->cc.release_cause ? : GSM48_CAUSE_RESOURCE_UNAVAIL

It seems that X2 is also used for a timeout during call release (though 
actually that seems like dead code), so probably

  if (fi->T == -2 && fi->state == CALL_LEG_ST_ESTABLISHING)
        trans->cc.release_cause = GSM48_CC_CAUSE_USER_NOTRESPOND;

The missing link is that call_leg doesn't know its cc trans yet, so in call_leg 
we would need to add a backpointer to the trans, like rtp_stream already has: 
for_trans.

All of this just if you think it is worthwhile...



--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/28509
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I4a9cfc388ec9ecb743d154a114a6db638eac4701
Gerrit-Change-Number: 28509
Gerrit-PatchSet: 1
Gerrit-Owner: keith <ke...@rhizomatica.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pma...@sysmocom.de>
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: neels <nhofm...@sysmocom.de>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>
Gerrit-CC: laforge <lafo...@osmocom.org>
Gerrit-Attention: laforge <lafo...@osmocom.org>
Gerrit-Attention: pespin <pes...@sysmocom.de>
Gerrit-Attention: fixeria <vyanits...@sysmocom.de>
Gerrit-Attention: keith <ke...@rhizomatica.org>
Gerrit-Attention: dexter <pma...@sysmocom.de>
Gerrit-Comment-Date: Fri, 22 Jul 2022 17:03:40 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: keith <ke...@rhizomatica.org>
Gerrit-MessageType: comment

Reply via email to