From 9e107e900ce5d91db8af6db81048e58bbd80af93 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 24 Oct 2023 18:11:31 +0300 Subject: [PATCH] engine: network: fix async NS resolve If we're currently running NS resolving thread, any request would block. Co-Authored-by: mittorn --- engine/common/net_ws.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/engine/common/net_ws.c b/engine/common/net_ws.c index ad3f3db9..49738d3e 100644 --- a/engine/common/net_ws.c +++ b/engine/common/net_ws.c @@ -444,6 +444,7 @@ static void NET_InitializeCriticalSections( void ) void NET_ResolveThread( void ) { struct sockaddr_storage addr; + qboolean res; RESOLVE_DBG( "[resolve thread] starting resolve for " ); RESOLVE_DBG( nsthread.hostname ); @@ -453,13 +454,14 @@ void NET_ResolveThread( void ) RESOLVE_DBG( " with gethostbyname\n" ); #endif - if( NET_GetHostByName( nsthread.hostname, nsthread.family, &addr )) + if(( res = NET_GetHostByName( nsthread.hostname, nsthread.family, &addr ))) RESOLVE_DBG( "[resolve thread] success\n" ); else RESOLVE_DBG( "[resolve thread] failed\n" ); mutex_lock( &nsthread.mutexres ); nsthread.addr = addr; nsthread.busy = false; + nsthread.result = res ? NET_EAI_OK : NET_EAI_NONAME; RESOLVE_DBG( "[resolve thread] returning result\n" ); mutex_unlock( &nsthread.mutexres ); RESOLVE_DBG( "[resolve thread] exiting thread\n" ); @@ -544,6 +546,7 @@ static net_gai_state_t NET_StringToSockaddr( const char *s, struct sockaddr_stor memset( &nsthread.addr, 0, sizeof( nsthread.addr )); detach_thread( nsthread.thread ); + asyncfailed = false; } else {