#define QUIC_FT_PKT_TYPE____1_BITMASK QUIC_FT_PKT_TYPE_1_BITMASK
+
+/* Flag a TX frame as acknowledged */
+#define QUIC_FL_TX_FRAME_ACKED 0x01
+
#define QUIC_STREAM_FRAME_TYPE_FIN_BIT 0x01
#define QUIC_STREAM_FRAME_TYPE_LEN_BIT 0x02
#define QUIC_STREAM_FRAME_TYPE_OFF_BIT 0x04
struct quic_connection_close connection_close;
struct quic_connection_close_app connection_close_app;
};
+ struct quic_frame *origin;
+ struct list reflist;
+ struct list ref;
+ unsigned int flags;
};
#endif /* USE_QUIC */
if (!frm)
goto err;
+ LIST_INIT(&frm->reflist);
frm->type = QUIC_FT_STREAM_8;
frm->stream.stream = qcs->stream;
frm->stream.id = qcs->id;
frm = pool_zalloc(pool_head_quic_frame);
BUG_ON(!frm); /* TODO handle this properly */
+ LIST_INIT(&frm->reflist);
frm->type = QUIC_FT_MAX_STREAMS_BIDI;
frm->max_streams_bidi.max_streams = qcc->lfctl.ms_bidi +
qcc->lfctl.cl_bidi_r;
found->crypto.len += cf_len;
}
else {
- frm = pool_alloc(pool_head_quic_frame);
+ frm = pool_zalloc(pool_head_quic_frame);
if (!frm)
return 0;
+ LIST_INIT(&frm->reflist);
frm->type = QUIC_FT_CRYPTO;
frm->crypto.offset = cf_offset;
frm->crypto.len = cf_len;
if (!frm)
return 0;
+ LIST_INIT(&frm->reflist);
frm->type = QUIC_FT_HANDSHAKE_DONE;
LIST_APPEND(&frm_list, &frm->list);
}
if (!frm)
goto err;
+ LIST_INIT(&frm->reflist);
cid = new_quic_cid(&qc->cids, qc, i);
if (!cid)
goto err;
else {
struct quic_frame *new_cf;
- new_cf = pool_alloc(pool_head_quic_frame);
+ new_cf = pool_zalloc(pool_head_quic_frame);
if (!new_cf) {
TRACE_PROTO("No memory for new crypto frame", QUIC_EV_CONN_BCFRMS, qc);
return 0;
}
+ LIST_INIT(&new_cf->reflist);
new_cf->type = QUIC_FT_CRYPTO;
new_cf->crypto.len = dlen;
new_cf->crypto.offset = cf->crypto.offset;
return 0;
}
+ LIST_INIT(&new_cf->reflist);
new_cf->type = cf->type;
new_cf->stream.stream = cf->stream.stream;
new_cf->stream.buf = cf->stream.buf;