aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2022-09-28 19:01:53 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2022-09-29 11:49:47 +0200
commitde68bc9065120b1407edf05890cad11e4b15c1f0 (patch)
treec6986111c753edfd07364acf10c6ad49916bb4e4
parentdc4e8747e921bbdc502451d89bf33ca2c66d6c36 (diff)
osmux: Fix unwanted RTP marker bit upon rx of osmux seqnum wrap around
The wrap around case was not properly considered in the condition setting the Marker bit. Let's fix it. Related: SYS#5987 Change-Id: I6e01f29a6239f930c9be2bcb2efe447e5de8fedf
-rw-r--r--src/osmux.c2
-rw-r--r--tests/osmux/osmux_output_test.ok2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/osmux.c b/src/osmux.c
index 20b6798..ec5712d 100644
--- a/src/osmux.c
+++ b/src/osmux.c
@@ -156,7 +156,7 @@ osmux_rebuild_rtp(struct osmux_out_handle *h, struct osmux_hdr *osmuxh,
* steady increase of delay
*/
rtph->marker = first_pkt &&
- (osmuxh->rtp_m || (osmuxh->seq != h->osmux_seq_ack + 1));
+ (osmuxh->rtp_m || (osmuxh->seq != ((h->osmux_seq_ack + 1) & 0xff)));
msgb_put(out_msg, sizeof(struct rtp_hdr));
diff --git a/tests/osmux/osmux_output_test.ok b/tests/osmux/osmux_output_test.ok
index f69c0a9..f08748f 100644
--- a/tests/osmux/osmux_output_test.ok
+++ b/tests/osmux/osmux_output_test.ok
@@ -108,7 +108,7 @@ sys={0.040000}, mono={0.040000}: dequeue: seq=61 ts=2260 enqueued=0
===test_output_seqnum_wraparound===
sys={0.000000}, mono={0.000000}: clock_override_set
sys={0.000000}, mono={0.000000}: Sending osmux frame with seqnum=0
-sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 M enqueued=5
+sys={0.000000}, mono={0.000000}: dequeue: seq=50 ts=500 enqueued=5
sys={0.040000}, mono={0.040000}: clock_override_add
sys={0.040000}, mono={0.040000}: dequeue: seq=51 ts=660 enqueued=4
sys={0.040000}, mono={0.040000}: dequeue: seq=52 ts=820 enqueued=3