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/.
lynxis lazus gerrit-no-reply at lists.osmocom.org
Review at https://gerrit.osmocom.org/1362
write_queue: implement overflow handling by dropping the oldest msgb
When a new element should be inserted into a full write queue, drop the oldest
message in queue.
Change-Id: Ica7d0a1f2bd7d9da238c8cac0686db78bcfd48f1
---
M src/write_queue.c
1 file changed, 8 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/62/1362/1
diff --git a/src/write_queue.c b/src/write_queue.c
index 3e488ae..5aa2307 100644
--- a/src/write_queue.c
+++ b/src/write_queue.c
@@ -104,8 +104,14 @@
*/
int osmo_wqueue_enqueue(struct osmo_wqueue *queue, struct msgb *data)
{
-// if (queue->current_length + 1 >= queue->max_length)
-// LOGP(DMSC, LOGL_ERROR, "The queue is full. Dropping not yet implemented.\n");
+ if (queue->current_length + 1 >= queue->max_length) {
+ struct llist_head *first = queue->msg_queue.next;
+ struct msgb* = container_of(first, struct msgb, list);
+ llist_del(queue->msg_queue.next);
+ msgb_free(first);
+ /* FIXME: this should be a rate limit warnin or error */
+ LOGP(DMSC, LOGL_DEBUG, "The queue is full. Dropping last package.\n");
+ }
++queue->current_length;
msgb_enqueue(&queue->msg_queue, data);
--
To view, visit https://gerrit.osmocom.org/1362
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ica7d0a1f2bd7d9da238c8cac0686db78bcfd48f1
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: lynxis lazus <lynxis at fe80.eu>