From 24e0217c2eca8e3197804a000c9b237daebc9f0c Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Tue, 20 Jul 2021 14:29:37 +0200 Subject: [PATCH] osmo_ortp: Fix seqno reset to 0 upon ssrc_changed It was spotted in an osmo-mgw instance receiving RTP from osmo-bts 1.2.3 that sometimes the seqno was reset to 0 (while tx_timestamp was kept properly). This seems to be the only possible way osmo-bts can reset the seqno to 0 (calling rtp_session_reset()), since osmo_rtp_socket_create already sets it to other values and inside ortp rtp_session_reset() is the only one setting it to 0. If SSRC changes, we are fine resetting some Rx state, which is done by calling rtp_session_resync. However, calling rtp_session_reset() is too much, since it erases other stuff like Tx state, which sholdn't be affected in this case, since we are still transmitting the same stream. Related: OS#3104 Related: OS#3299 Related: SYS#5498 Fixes: 28eeb6bc9365bbe47125775fcb1f696317c22466 Change-Id: Ic6006b4991c85413b009b70f8f3a6f97c41990ec --- src/trau/osmo_ortp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/trau/osmo_ortp.c b/src/trau/osmo_ortp.c index b72f681..011f097 100644 --- a/src/trau/osmo_ortp.c +++ b/src/trau/osmo_ortp.c @@ -142,8 +142,8 @@ static void ortp_sig_cb_ssrc(RtpSession *rs, void *data) uint32_t ssrc = rtp_session_get_recv_ssrc(rs); LOGP(DLMIB, LOGL_INFO, - "osmo-ortp(%d): ssrc_changed to 0x%08x, resetting\n", port, ssrc); - rtp_session_reset(rs); + "osmo-ortp(%d): ssrc_changed to 0x%08x, resyncing\n", port, ssrc); + rtp_session_resync(rs); } static void ortp_sig_cb_pt(RtpSession *rs, void *data)