Cover multicast report backpressure, chunking and timer cleanup
This commit is contained in:
1 parent
961c3447d0
commit
b250e8a44d
2 files changed
+76
-3
No files matched your search
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user