Cover multicast report backpressure, chunking and timer cleanup

This commit is contained in:
evgeny committed 2026-10-20 15:08:59 +02:00
1 parent 961c3447d0
commit b250e8a44d
2 files changed
+76 -3

No files matched your search

+5 -1
View File
@@ -304,7 +304,11 @@ static void mc_loss(struct multicast_ctx* ctx, const struct mc_packet* p, uint64
*tail = window; ctx->stats.report_bytes += sizeof(*window);
}
struct mc_report* r = u_calloc(1, bytes);
if (!r) { DEBUG_ERROR(MC_CAT, "multicast loss allocation failed bytes=%zu", bytes); return; }
if (!r) {
DEBUG_ERROR(MC_CAT, "multicast loss allocation failed bytes=%zu", bytes);
mc_report_schedule(ctx); /* Созданное окно должно истечь даже при отказе выделения отчёта. */
return;
}
r->ctx = ctx; r->due = due; r->retry = due;
r->loss = (struct multicast_loss){ .group_id = p->group, .source_node_id = p->source,
.src = ctx->inst->node_id, .dst = dst, .descriptor = p->descriptor, .recipient_count = count,