osmux: dup in RTP pkt: check before applying queue flush due to Marker bit

We need to filter duplicate messages before checking the Mark bit and
returning 1 to tell the user to deliver the current batchset content.
Otherwise, a repeated RTP packet with an M bit would trigger delivery,
which is wrong.

Change-Id: I4a01b0935f112d650d8fc161b3389eda6c8e75ec
This commit is contained in:
Pau Espin 2022-11-15 17:14:06 +01:00
parent 2fca99c7cf
commit 710d304208
1 changed files with 6 additions and 6 deletions

View File

@ -452,12 +452,6 @@ osmux_link_add(struct osmux_link *link, const struct osmux_in_req *req)
link->ndummy--;
}
/* Init of talkspurt (RTP M marker bit) needs to be in the first AMR slot
* of the OSMUX packet, enforce sending previous batch if required:
*/
if (req->rtph->marker && req->circuit->nmsgs != 0)
return 1;
/* Extra validation: check if this message already exists, should not
* happen but make sure we don't propagate duplicated messages.
*/
@ -473,6 +467,12 @@ osmux_link_add(struct osmux_link *link, const struct osmux_in_req *req)
}
}
/* Init of talkspurt (RTP M marker bit) needs to be in the first AMR slot
* of the OSMUX packet, enforce sending previous batch if required:
*/
if (req->rtph->marker && req->circuit->nmsgs != 0)
return 1;
/* First check if there is room for this message in the batch */
/* First in batch comes after the batch header: */
if (req->circuit->nmsgs == 0)