struct qf_new_token {
uint64_t len;
- unsigned char data[QUIC_TOKEN_LEN];
+ /* Used only to send data */
+ unsigned char w_data[QUIC_TOKEN_LEN];
+ /* Used only to receive data */
+ const unsigned char *r_data;
};
struct qf_stream {
}
new_token_frm_len =
- quic_generate_token(frm->new_token.data,
- sizeof(frm->new_token.data), &qc->peer_addr);
+ quic_generate_token(frm->new_token.w_data,
+ sizeof(frm->new_token.w_data), &qc->peer_addr);
if (!new_token_frm_len) {
TRACE_ERROR("token generation failed", QUIC_EV_CONN_IO_CB, qc);
goto err;
}
- BUG_ON(new_token_frm_len != sizeof(frm->new_token.data));
+ BUG_ON(new_token_frm_len != sizeof(frm->new_token.w_data));
frm->new_token.len = new_token_frm_len;
LIST_APPEND(&frm_list, &frm->list);
}
if (!quic_enc_int(pos, end, new_token_frm->len) || end - *pos < new_token_frm->len)
return 0;
- memcpy(*pos, new_token_frm->data, new_token_frm->len);
+ memcpy(*pos, new_token_frm->w_data, new_token_frm->len);
*pos += new_token_frm->len;
return 1;
if (!quic_dec_int(&new_token_frm->len, pos, end) || end - *pos < new_token_frm->len)
return 0;
- /* TODO token length is unknown as it is dependent from the peer. Hence
- * dynamic allocation should be implemented for token storage, albeit
- * with constraint to ensure memory usage remains reasonable.
- */
-#if 0
- if (sizeof(new_token_frm->data) < new_token_frm->len)
- return 0;
- memcpy(new_token_frm->data, *pos, new_token_frm->len);
-#endif
-
+ new_token_frm->r_data = *pos;
*pos += new_token_frm->len;
return 1;