This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgReview at https://gerrit.osmocom.org/2403 osmux: Check batch_factor overflow in osmux_batch_enqueue This commit should fix a bug present if for instance batch_factor < 8 and osmux_batch_enqueue is called from osmux_replay_lost_packets and enough packets were lost from last received packet. Change-Id: I5d643810949aeca4762f0cad05eed534d35087f7 --- M src/osmux.c 1 file changed, 7 insertions(+), 6 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/03/2403/1 diff --git a/src/osmux.c b/src/osmux.c index 5655269..4852c44 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -206,12 +206,13 @@ int dummy; }; -static int osmux_batch_enqueue(struct msgb *msg, struct osmux_circuit *circuit) +static int osmux_batch_enqueue(struct msgb *msg, struct osmux_circuit *circuit, + int batch_factor) { /* Too many messages per batch, discard it. The counter field of the * osmux header is just 3 bits long, so make sure it doesn't overflow. */ - if (circuit->nmsgs >= 8) { + if (circuit->nmsgs >= batch_factor || circuit->nmsgs >= 8) { struct rtp_hdr *rtph; rtph = osmo_rtp_get_hdr(msg); @@ -454,7 +455,7 @@ } static void osmux_replay_lost_packets(struct osmux_circuit *circuit, - struct rtp_hdr *cur_rtph) + struct rtp_hdr *cur_rtph, int batch_factor) { int16_t diff; struct msgb *last; @@ -500,7 +501,7 @@ DELTA_RTP_TIMESTAMP); /* No more room in this batch, skip padding with more clones */ - if (osmux_batch_enqueue(clone, circuit) < 0) { + if (osmux_batch_enqueue(clone, circuit, batch_factor) < 0) { msgb_free(clone); break; } @@ -609,10 +610,10 @@ } } /* Handle RTP packet loss scenario */ - osmux_replay_lost_packets(circuit, rtph); + osmux_replay_lost_packets(circuit, rtph, batch_factor); /* This batch is full, force batch delivery */ - if (osmux_batch_enqueue(msg, circuit) < 0) + if (osmux_batch_enqueue(msg, circuit, batch_factor) < 0) return 1; #ifdef DEBUG_MSG -- To view, visit https://gerrit.osmocom.org/2403 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I5d643810949aeca4762f0cad05eed534d35087f7 Gerrit-PatchSet: 1 Gerrit-Project: libosmo-netif Gerrit-Branch: master Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>