From c7700f96fc3119b1e3cf81582419493455191899 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 1 Feb 2024 18:05:36 -0600 Subject: [PATCH] Enable opportunistic QoS tagging for control messages --- src/network.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/network.cpp b/src/network.cpp index 5778c8db..2a3d47fc 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -176,11 +176,21 @@ namespace net { host_t host_create(af_e af, ENetAddress &addr, std::size_t peers, std::uint16_t port) { + static std::once_flag enet_init_flag; + std::call_once(enet_init_flag, []() { + enet_initialize(); + }); + auto any_addr = net::af_to_any_address_string(af); enet_address_set_host(&addr, any_addr.data()); enet_address_set_port(&addr, port); - return host_t { enet_host_create(af == IPV4 ? AF_INET : AF_INET6, &addr, peers, 0, 0, 0) }; + auto host = host_t { enet_host_create(af == IPV4 ? AF_INET : AF_INET6, &addr, peers, 0, 0, 0) }; + + // Enable opportunistic QoS tagging (automatically disables if the network appears to drop tagged packets) + enet_socket_set_option(host->socket, ENET_SOCKOPT_QOS, 1); + + return host; } void