in ncrx/libncrx.c [588:616]
static void ncrx_build_resp(struct ncrx_slot *slot, struct ncrx *ncrx)
{
/* no msg received? */
if (!ncrx->head_seq)
return;
/* "ncrx<ack-seq>" */
if (!ncrx->resp_len) {
ncrx->acked_seq = tail_seq(ncrx) - 1;
ncrx->acked_at = ncrx->now_mono;
ncrx->resp_len = snprintf(ncrx->resp_buf, NCRX_PKT_MAX,
"ncrx%"PRIu64, ncrx->acked_seq);
}
/* " <missing-seq>..." truncated to NCRX_PKT_MAX */
if (slot) {
int idx = slot - ncrx->slots;
int len;
len = snprintf(ncrx->resp_buf + ncrx->resp_len,
NCRX_PKT_MAX - ncrx->resp_len, " %"PRIu64,
ncrx->head_seq - slot_dist(idx, ncrx));
if (ncrx->resp_len + len <= NCRX_PKT_MAX) {
ncrx->resp_len += len;
ncrx->resp_buf[ncrx->resp_len] = '\0';
}
}
}