neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/27657 )
Change subject: assignment_fsm: always update RTP info ......................................................................
assignment_fsm: always update RTP info
When the assignment succeeds, the assignment_request has taken effect and whatever it requested should now be in effect.
Hence copy the new RTP information from the assignment_request to the conn's storage indicating what is currently used, always, not only when lchan_changed == true. The RTP information may have changed also from a Mode Modify where the lchan stays the same but changes its mode of use, e.g. from signalling to voice.
When there is no RTP involved, this data is zero or empty, so there is no harm in copying it, always.
Related: SYS#5916 Change-Id: I0788d1f013b8f820f559b6ed58a5f9bb8a02e0b4 --- M src/osmo-bsc/assignment_fsm.c 1 file changed, 6 insertions(+), 7 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/57/27657/1
diff --git a/src/osmo-bsc/assignment_fsm.c b/src/osmo-bsc/assignment_fsm.c index c7fc335..7deca65 100644 --- a/src/osmo-bsc/assignment_fsm.c +++ b/src/osmo-bsc/assignment_fsm.c @@ -287,13 +287,12 @@ * the MGW endpoint right away. If successful, the conn continues to use the endpoint. */ conn->assignment.created_ci_for_msc = NULL;
- if (lchan_changed) { - /* New RTP information is now accepted */ - conn->user_plane.msc_assigned_cic = conn->assignment.req.msc_assigned_cic; - osmo_strlcpy(conn->user_plane.msc_assigned_rtp_addr, conn->assignment.req.msc_rtp_addr, - sizeof(conn->user_plane.msc_assigned_rtp_addr)); - conn->user_plane.msc_assigned_rtp_port = conn->assignment.req.msc_rtp_port; - } + /* New RTP information is now accepted. If there is no RTP stream, this information is zero / empty. Either way + * store the result of this assignment. */ + conn->user_plane.msc_assigned_cic = conn->assignment.req.msc_assigned_cic; + osmo_strlcpy(conn->user_plane.msc_assigned_rtp_addr, conn->assignment.req.msc_rtp_addr, + sizeof(conn->user_plane.msc_assigned_rtp_addr)); + conn->user_plane.msc_assigned_rtp_port = conn->assignment.req.msc_rtp_port;
assignment_count_result(CTR_ASSIGNMENT_COMPLETED);