diff --git a/include/nng/mqtt/mqtt_quic.h b/include/nng/mqtt/mqtt_quic.h index b670de50..7c1031d8 100644 --- a/include/nng/mqtt/mqtt_quic.h +++ b/include/nng/mqtt/mqtt_quic.h @@ -37,6 +37,7 @@ struct conf_tls { struct conf_quic { conf_tls tls; bool qos_first; // send QoS msg in high priority + bool multi_stream; uint64_t qkeepalive; //keepalive timeout interval of QUIC transport uint64_t qconnect_timeout; // HandshakeIdleTimeoutMs of QUIC uint32_t qdiscon_timeout; // DisconnectTimeoutMs diff --git a/src/mqtt/protocol/mqtt/mqtt_quic.c b/src/mqtt/protocol/mqtt/mqtt_quic.c index 15f5f1e5..ab52fffd 100644 --- a/src/mqtt/protocol/mqtt/mqtt_quic.c +++ b/src/mqtt/protocol/mqtt/mqtt_quic.c @@ -91,6 +91,8 @@ static conf_quic config_default = { .verify_peer = true, .set_fail = true, }, + .multi_stream = false, + .qos_first = false, .qkeepalive = 30, .qconnect_timeout = 60, .qdiscon_timeout = 30, @@ -1827,11 +1829,17 @@ nng_mqtt_quic_client_open_conf(nng_socket *sock, const char *url, conf_quic *con { nni_sock *nsock = NULL; int rv = 0; + if (conf == NULL) { + return -1; + } // Quic settings if ((rv = nni_proto_open(sock, &mqtt_msquic_proto)) == 0) { nni_sock_find(&nsock, sock->id); if (nsock) { + mqtt_sock_t *mqtt_sock = nni_sock_proto_data(nsock); quic_open(); + mqtt_sock->multi_stream = conf->multi_stream; + mqtt_sock->qos_first = conf->qos_first; quic_proto_open(&mqtt_msquic_proto); quic_proto_set_sdk_config((void *)conf); quic_connect_ipv4(url, nsock, NULL);