gnutls_record_set_max_early_data_size(conn->tls_session, 0xffffffffu);
- conn->conn_ref = (ngtcp2_crypto_conn_ref) {
+ conn->conn_ref = (nc_conn_ref_placeholder_t) {
.get_conn = get_conn,
.user_data = conn
};
+ _Static_assert(sizeof(nc_conn_ref_placeholder_t) == sizeof(ngtcp2_crypto_conn_ref), "invalid placeholder for conn_ref");
gnutls_session_set_ptr(conn->tls_session, &conn->conn_ref);
if (server) {
#include <stdint.h>
#include <sys/uio.h>
-#include <ngtcp2/ngtcp2_crypto.h> // TODO private structure?
-
#define MAX_STREAMS_PER_CONN 10
struct ngtcp2_cid; // declaration taken from wherever in ngtcp2
knot_xquic_ucw_node_t head, tail;
} knot_xquic_ucw_list_t;
+typedef struct {
+ void *get_conn;
+ void *user_data;
+} nc_conn_ref_placeholder_t;
+
typedef struct {
knot_xquic_ucw_node_t node;
size_t len;
typedef struct knot_xquic_conn {
knot_xquic_ucw_node_t timeout; // MUST be first field of the struct
- ngtcp2_crypto_conn_ref conn_ref; // TODO private structure?
+ nc_conn_ref_placeholder_t conn_ref; // placeholder for internal struct ngtcp2_crypto_conn_ref
struct ngtcp2_conn *conn;