*/
static inline struct quic_connection_id *new_quic_cid(struct eb_root *root,
struct quic_conn *qc,
- int seq_num)
+ int seq_num, unsigned char *dcid)
{
struct quic_connection_id *cid;
goto err;
}
+ /* Set the same first octet from <dcid> */
+ cid->cid.data[0] = *dcid;
+
cid->qc = qc;
cid->seq_num.key = seq_num;
if (!frm)
goto err;
- cid = new_quic_cid(&qc->cids, qc, i);
+ cid = new_quic_cid(&qc->cids, qc, i, qc->scid.data);
if (!cid)
goto err;
/* Initialize the output buffer */
qc->obuf.pos = qc->obuf.data;
- icid = new_quic_cid(&qc->cids, qc, 0);
+ icid = new_quic_cid(&qc->cids, qc, 0, dcid);
if (!icid) {
TRACE_PROTO("Could not allocate a new connection ID", QUIC_EV_CONN_INIT, qc);
goto err;