summaryrefslogtreecommitdiff
path: root/src/mpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mpu.c')
-rw-r--r--src/mpu.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mpu.c b/src/mpu.c
index 32c0ffe..f25f1d8 100644
--- a/src/mpu.c
+++ b/src/mpu.c
@@ -94,8 +94,6 @@ int mpu_send(mpu_ctx_t* ctx, const uint8_t* data, size_t len) {
return 0;
}
-// FIXME: Skipped packages are never purged
-
// TODO: Zero-copy recv() into reorder buffer slot, requiring the user to provide a callback
// for processing received packets, instead of copying into a user buffer.
@@ -137,6 +135,10 @@ ssize_t mpu_recv(mpu_ctx_t* ctx, uint8_t* data, size_t len) {
}
mpu_slot_t* slot = (mpu_slot_t*) node->user;
+ if (slot->packet.hdr.seq_num < ctx->recv_seq_num) {
+ heap_extract(&ctx->reorder_heap);
+ continue;
+ }
int age = (int) (now - slot->timestamp);
if (age < ctx->reorder_window) {