diff options
| -rw-r--r-- | src/mpu.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -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) { |
