From ca0b899a54b36c0064eb0bc0e373e08d758a760b Mon Sep 17 00:00:00 2001 From: Logan Aerl Arias <logana@srb2.org> Date: Wed, 10 Jan 2024 12:45:53 -0500 Subject: [PATCH] Moved UPnP startup code to a thread Moved UPnP startup code to a thread --- src/netcode/i_tcp.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/netcode/i_tcp.c b/src/netcode/i_tcp.c index 3fa2306479..acacf1b196 100644 --- a/src/netcode/i_tcp.c +++ b/src/netcode/i_tcp.c @@ -134,6 +134,7 @@ typedef union #include "d_netfil.h" #include "i_tcp.h" #include "../m_argv.h" +#include "../i_threads.h" #include "../doomstat.h" @@ -263,12 +264,24 @@ static const char* inet_ntopA(short af, const void *cp, char *buf, socklen_t len #ifdef HAVE_MINIUPNPC // based on old XChat patch static void I_ShutdownUPnP(void); +static void I_InitUPnP(void); +static void init_upnpc_once(int *upnpc_userdata); static struct UPNPUrls urls; static struct IGDdatas data; static char lanaddr[64]; +int *upnpc_started = 0; -static inline void I_InitUPnP(void) +static void I_InitUPnP(void) { + I_spawn_thread("init_upnpc_once", (I_thread_fn)init_upnpc_once, upnpc_started); +} + +static void +init_upnpc_once( int *upnpc_userdata) +{ + if (upnpc_userdata != 0) + return; + const char * const deviceTypes[] = { "urn:schemas-upnp-org:device:InternetGatewayDevice:2", "urn:schemas-upnp-org:device:InternetGatewayDevice:1", -- GitLab