From af7fa97e5fd195542004d37d4b067e57827d95d4 Mon Sep 17 00:00:00 2001 From: Rick Dicaire Date: Wed, 5 Nov 2025 18:21:57 -0500 Subject: [PATCH 1/8] Provides SRV support for --directoryaddress --- src/serverlist.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 0488aa28d3..538a6a2bed 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -974,8 +974,13 @@ void CServerListManager::SetRegistered ( const bool bIsRegister ) // it is an URL of a dynamic IP address, the IP address might have // changed in the meanwhile. // Allow IPv4 only for communicating with Directories - const QString strNetworkAddress = NetworkUtil::GetDirectoryAddress ( DirectoryType, strDirectoryAddress ); - const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddress ( strNetworkAddress, DirectoryAddress, false ); + // Use SRV DNS discovery for directory connections + const QString strNetworkAddress = NetworkUtil::GetDirectoryAddress ( DirectoryType, strDirectoryAddress ); +#ifndef CLIENT_NO_SRV_CONNECT + const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( strNetworkAddress, DirectoryAddress, false ); +#else + const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddress ( strNetworkAddress, DirectoryAddress, false ); +#endif if ( bIsRegister ) { From 5ba919d55cabe44aafd36f188265d7fb794b183e Mon Sep 17 00:00:00 2001 From: Rick Dicaire Date: Wed, 5 Nov 2025 19:26:58 -0500 Subject: [PATCH 2/8] Update comment for clarity --- src/serverlist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 538a6a2bed..e5900548a7 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -974,7 +974,7 @@ void CServerListManager::SetRegistered ( const bool bIsRegister ) // it is an URL of a dynamic IP address, the IP address might have // changed in the meanwhile. // Allow IPv4 only for communicating with Directories - // Use SRV DNS discovery for directory connections + // Use SRV DNS discovery for directory connections, fallback to A/AAAA if none. const QString strNetworkAddress = NetworkUtil::GetDirectoryAddress ( DirectoryType, strDirectoryAddress ); #ifndef CLIENT_NO_SRV_CONNECT const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( strNetworkAddress, DirectoryAddress, false ); From 0fa4fe6e0fff349a3a80d894bbad7aa15fd342e2 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Tue, 13 Jan 2026 17:42:21 +0000 Subject: [PATCH 3/8] Unlock mutex before resolving SRV --- src/serverlist.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/serverlist.cpp b/src/serverlist.cpp index e5900548a7..1a50ca1c1f 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -969,6 +969,12 @@ void CServerListManager::SetRegistered ( const bool bIsRegister ) return; } + // It is very important to unlock the Mutex before doing address resolution, + // so that the event loop can run and any other timers that need the mutex + // can obtain it. Otherwise there is the possibility of deadlock when doing + // the SRV lookup, if another timer fires that needs the same mutex. + locker.unlock(); + // get the correct directory address // Note that we always have to parse the server address again since if // it is an URL of a dynamic IP address, the IP address might have @@ -982,6 +988,9 @@ void CServerListManager::SetRegistered ( const bool bIsRegister ) const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddress ( strNetworkAddress, DirectoryAddress, false ); #endif + // lock the mutex again now that the address has been resolved. + locker.relock(); + if ( bIsRegister ) { if ( bDirectoryAddressValid ) From 8a50dc467e64acff29fc4bc9657f77ee78f8dd58 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Mon, 19 Jan 2026 15:56:38 +0000 Subject: [PATCH 4/8] Add SRV discovery for custom directory in client --- src/clientrpc.cpp | 6 ++++++ src/connectdlg.cpp | 10 +++++++++- src/global.h | 4 ++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/clientrpc.cpp b/src/clientrpc.cpp index 3d92d54713..873f00df6d 100644 --- a/src/clientrpc.cpp +++ b/src/clientrpc.cpp @@ -164,7 +164,13 @@ CClientRpc::CClientRpc ( CClient* pClient, CRpcServer* pRpcServer, QObject* pare } CHostAddress haDirectoryAddress; + + // Allow IPv4 only for communicating with Directories +#ifdef CLIENT_NO_SRV_CONNECT if ( NetworkUtil().ParseNetworkAddress ( jsonDirectoryIp.toString(), haDirectoryAddress, false ) ) +#else + if ( NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( jsonDirectoryIp.toString(), haDirectoryAddress, false ) ) +#endif { // send the request for the server list pClient->CreateCLReqServerListMes ( haDirectoryAddress ); diff --git a/src/connectdlg.cpp b/src/connectdlg.cpp index cbdf289376..0215e3856f 100644 --- a/src/connectdlg.cpp +++ b/src/connectdlg.cpp @@ -318,16 +318,23 @@ void CConnectDlg::RequestServerList() } cbxDirectory->blockSignals ( false ); - // Get the IP address of the directory server (using the ParseNetworAddress + // Get the IP address of the directory server (using the ParseNetworkAddress // function) when the connect dialog is opened, this seems to be the correct // time to do it. Note that in case of custom directories we // use iCustomDirectoryIndex as an index into the vector. // Allow IPv4 only for communicating with Directories +#ifdef CLIENT_NO_SRV_CONNECT if ( NetworkUtil().ParseNetworkAddress ( NetworkUtil::GetDirectoryAddress ( pSettings->eDirectoryType, pSettings->vstrDirectoryAddress[pSettings->iCustomDirectoryIndex] ), haDirectoryAddress, false ) ) +#else + if ( NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( + NetworkUtil::GetDirectoryAddress ( pSettings->eDirectoryType, pSettings->vstrDirectoryAddress[pSettings->iCustomDirectoryIndex] ), + haDirectoryAddress, + false ) ) +#endif { // send the request for the server list emit ReqServerListQuery ( haDirectoryAddress ); @@ -856,6 +863,7 @@ void CConnectDlg::OnTimerPing() // try to parse host address string which is stored as user data // in the server list item GUI control element + // the data to be parsed is just IP:port, so no SRV discovery is needed if ( NetworkUtil().ParseNetworkAddress ( pCurListViewItem->data ( LVC_NAME, Qt::UserRole ).toString(), haServerAddress, bEnableIPv6 ) ) { // if address is valid, send ping message using a new thread diff --git a/src/global.h b/src/global.h index 03ec70b81d..872d09f37d 100644 --- a/src/global.h +++ b/src/global.h @@ -96,8 +96,8 @@ LED bar: lbr #define MAX_DELAY_PANNING_SAMPLES 64 // default server address and port numbers -#define DEFAULT_QOS_NUMBER 128 // CS4 (Quality of Service) -#define DEFAULT_SERVER_ADDRESS "anygenre1.jamulus.io" +#define DEFAULT_QOS_NUMBER 128 // CS4 (Quality of Service) +#define DEFAULT_SERVER_ADDRESS "anygenre1.jamulus.io:22124" // default port explicit to avoid unneeded SRV lookup #define DEFAULT_PORT_NUMBER 22124 #define CENTSERV_ANY_GENRE2 "anygenre2.jamulus.io:22224" #define CENTSERV_ANY_GENRE3 "anygenre3.jamulus.io:22624" From 044bccc27de98afa6eb6e17f75b50501639afe88 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Fri, 23 Jan 2026 18:29:51 +0000 Subject: [PATCH 5/8] Refactor ParseNetworkAddress and SRV support --- src/client.cpp | 6 +----- src/clientdlg.cpp | 4 ++-- src/clientrpc.cpp | 6 +----- src/connectdlg.cpp | 11 ++--------- src/serverdlg.cpp | 4 ++-- src/serverlist.cpp | 10 +++------- src/util.cpp | 12 +++++++----- src/util.h | 6 +++--- 8 files changed, 21 insertions(+), 38 deletions(-) diff --git a/src/client.cpp b/src/client.cpp index 9e8ee9da1e..1046d3206b 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -570,11 +570,7 @@ void CClient::SetRemoteChanPan ( const int iId, const float fPan ) bool CClient::SetServerAddr ( QString strNAddr ) { CHostAddress HostAddress; -#ifdef CLIENT_NO_SRV_CONNECT - if ( NetworkUtil().ParseNetworkAddress ( strNAddr, HostAddress, bEnableIPv6 ) ) -#else - if ( NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( strNAddr, HostAddress, bEnableIPv6 ) ) -#endif + if ( NetworkUtil::ParseNetworkAddress ( strNAddr, HostAddress, bEnableIPv6 ) ) { // apply address to the channel Channel.SetAddress ( HostAddress ); diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 0c7d3af859..3a9a119f6c 100644 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -588,12 +588,12 @@ CClientDlg::CClientDlg ( CClient* pNCliP, // Send the request to two servers for redundancy if either or both of them // has a higher release version number, the reply will trigger the notification. - if ( NetworkUtil().ParseNetworkAddress ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) + if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) { pClient->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } - if ( NetworkUtil().ParseNetworkAddress ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) + if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) { pClient->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } diff --git a/src/clientrpc.cpp b/src/clientrpc.cpp index 873f00df6d..f2c3f53cc3 100644 --- a/src/clientrpc.cpp +++ b/src/clientrpc.cpp @@ -166,11 +166,7 @@ CClientRpc::CClientRpc ( CClient* pClient, CRpcServer* pRpcServer, QObject* pare CHostAddress haDirectoryAddress; // Allow IPv4 only for communicating with Directories -#ifdef CLIENT_NO_SRV_CONNECT - if ( NetworkUtil().ParseNetworkAddress ( jsonDirectoryIp.toString(), haDirectoryAddress, false ) ) -#else - if ( NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( jsonDirectoryIp.toString(), haDirectoryAddress, false ) ) -#endif + if ( NetworkUtil::ParseNetworkAddress ( jsonDirectoryIp.toString(), haDirectoryAddress, false ) ) { // send the request for the server list pClient->CreateCLReqServerListMes ( haDirectoryAddress ); diff --git a/src/connectdlg.cpp b/src/connectdlg.cpp index 0215e3856f..c0a2b8c17f 100644 --- a/src/connectdlg.cpp +++ b/src/connectdlg.cpp @@ -324,17 +324,10 @@ void CConnectDlg::RequestServerList() // use iCustomDirectoryIndex as an index into the vector. // Allow IPv4 only for communicating with Directories -#ifdef CLIENT_NO_SRV_CONNECT - if ( NetworkUtil().ParseNetworkAddress ( + if ( NetworkUtil::ParseNetworkAddress ( NetworkUtil::GetDirectoryAddress ( pSettings->eDirectoryType, pSettings->vstrDirectoryAddress[pSettings->iCustomDirectoryIndex] ), haDirectoryAddress, false ) ) -#else - if ( NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( - NetworkUtil::GetDirectoryAddress ( pSettings->eDirectoryType, pSettings->vstrDirectoryAddress[pSettings->iCustomDirectoryIndex] ), - haDirectoryAddress, - false ) ) -#endif { // send the request for the server list emit ReqServerListQuery ( haDirectoryAddress ); @@ -864,7 +857,7 @@ void CConnectDlg::OnTimerPing() // try to parse host address string which is stored as user data // in the server list item GUI control element // the data to be parsed is just IP:port, so no SRV discovery is needed - if ( NetworkUtil().ParseNetworkAddress ( pCurListViewItem->data ( LVC_NAME, Qt::UserRole ).toString(), haServerAddress, bEnableIPv6 ) ) + if ( NetworkUtil::ParseNetworkAddressBare ( pCurListViewItem->data ( LVC_NAME, Qt::UserRole ).toString(), haServerAddress, bEnableIPv6 ) ) { // if address is valid, send ping message using a new thread #if QT_VERSION >= QT_VERSION_CHECK( 6, 0, 0 ) diff --git a/src/serverdlg.cpp b/src/serverdlg.cpp index 086060a4f1..e1a5785b77 100644 --- a/src/serverdlg.cpp +++ b/src/serverdlg.cpp @@ -482,12 +482,12 @@ CServerDlg::CServerDlg ( CServer* pNServP, CServerSettings* pNSetP, const bool b // Send the request to two servers for redundancy if either or both of them // has a higher release version number, the reply will trigger the notification. - if ( NetworkUtil().ParseNetworkAddress ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) + if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) { pServer->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } - if ( NetworkUtil().ParseNetworkAddress ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) + if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) { pServer->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } diff --git a/src/serverlist.cpp b/src/serverlist.cpp index 1a50ca1c1f..c1e9aab4de 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -805,7 +805,7 @@ bool CServerListManager::Load() continue; } - NetworkUtil::ParseNetworkAddress ( slLine[0], haServerHostAddr, bEnableIPv6 ); + NetworkUtil::ParseNetworkAddressBare ( slLine[0], haServerHostAddr, bEnableIPv6 ); int iIdx = IndexOf ( haServerHostAddr ); if ( iIdx != INVALID_INDEX ) { @@ -981,12 +981,8 @@ void CServerListManager::SetRegistered ( const bool bIsRegister ) // changed in the meanwhile. // Allow IPv4 only for communicating with Directories // Use SRV DNS discovery for directory connections, fallback to A/AAAA if none. - const QString strNetworkAddress = NetworkUtil::GetDirectoryAddress ( DirectoryType, strDirectoryAddress ); -#ifndef CLIENT_NO_SRV_CONNECT - const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddressWithSrvDiscovery ( strNetworkAddress, DirectoryAddress, false ); -#else - const bool bDirectoryAddressValid = NetworkUtil().ParseNetworkAddress ( strNetworkAddress, DirectoryAddress, false ); -#endif + const QString strNetworkAddress = NetworkUtil::GetDirectoryAddress ( DirectoryType, strDirectoryAddress ); + const bool bDirectoryAddressValid = NetworkUtil::ParseNetworkAddress ( strNetworkAddress, DirectoryAddress, false ); // lock the mutex again now that the address has been resolved. locker.relock(); diff --git a/src/util.cpp b/src/util.cpp index e81f1b41da..4fd1f3af59 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -750,7 +750,7 @@ bool NetworkUtil::ParseNetworkAddressString ( QString strAddress, QHostAddress& return false; } -#ifndef CLIENT_NO_SRV_CONNECT +#ifndef DISABLE_SRV_DNS bool NetworkUtil::ParseNetworkAddressSrv ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ) { // init requested host address with invalid address first @@ -806,20 +806,22 @@ bool NetworkUtil::ParseNetworkAddressSrv ( QString strAddress, CHostAddress& Hos } return false; } +#endif -bool NetworkUtil::ParseNetworkAddressWithSrvDiscovery ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ) +bool NetworkUtil::ParseNetworkAddress ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ) { +#ifndef DISABLE_SRV_DNS // Try SRV-based discovery first: if ( ParseNetworkAddressSrv ( strAddress, HostAddress, bEnableIPv6 ) ) { return true; } +#endif // Try regular connect via plain IP or host name lookup (A/AAAA): - return ParseNetworkAddress ( strAddress, HostAddress, bEnableIPv6 ); + return ParseNetworkAddressBare ( strAddress, HostAddress, bEnableIPv6 ); } -#endif -bool NetworkUtil::ParseNetworkAddress ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ) +bool NetworkUtil::ParseNetworkAddressBare ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ) { QHostAddress InetAddr; unsigned int iNetPort = DEFAULT_PORT_NUMBER; diff --git a/src/util.h b/src/util.h index 5fabfe7c4b..e83e1f764a 100644 --- a/src/util.h +++ b/src/util.h @@ -53,7 +53,7 @@ #include #include #include -#ifndef CLIENT_NO_SRV_CONNECT +#ifndef DISABLE_SRV_DNS # include #endif #ifndef _WIN32 @@ -1055,11 +1055,11 @@ class NetworkUtil public: static bool ParseNetworkAddressString ( QString strAddress, QHostAddress& InetAddr, bool bEnableIPv6 ); -#ifndef CLIENT_NO_SRV_CONNECT +#ifndef DISABLE_SRV_DNS static bool ParseNetworkAddressSrv ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ); - static bool ParseNetworkAddressWithSrvDiscovery ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ); #endif static bool ParseNetworkAddress ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ); + static bool ParseNetworkAddressBare ( QString strAddress, CHostAddress& HostAddress, bool bEnableIPv6 ); static QString FixAddress ( const QString& strAddress ); static CHostAddress GetLocalAddress(); From 951b41dbbe76f2e69ab560c982cc33ce21d9f572 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Fri, 23 Jan 2026 23:30:44 +0000 Subject: [PATCH 6/8] Add explanatory comment in CServerListManager::Load() --- src/serverlist.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/serverlist.cpp b/src/serverlist.cpp index c1e9aab4de..4dabe4c7ef 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -805,6 +805,8 @@ bool CServerListManager::Load() continue; } + // This uses ParseNetworkAddressBare because it is just parsing ip:host that was saved to the file. + // Therefore no SRV lookup is appropriate. NetworkUtil::ParseNetworkAddressBare ( slLine[0], haServerHostAddr, bEnableIPv6 ); int iIdx = IndexOf ( haServerHostAddr ); if ( iIdx != INVALID_INDEX ) From b476d35a169dda03a0c33e90cd5de500ab3313bb Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Sat, 24 Jan 2026 13:03:38 +0000 Subject: [PATCH 7/8] Don't use SRV resolution when resolving update servers --- src/clientdlg.cpp | 6 ++++-- src/serverdlg.cpp | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/clientdlg.cpp b/src/clientdlg.cpp index 3a9a119f6c..cd678deacb 100644 --- a/src/clientdlg.cpp +++ b/src/clientdlg.cpp @@ -588,12 +588,14 @@ CClientDlg::CClientDlg ( CClient* pNCliP, // Send the request to two servers for redundancy if either or both of them // has a higher release version number, the reply will trigger the notification. - if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) + // Don't use SRV resolution when resolving update servers. + + if ( NetworkUtil::ParseNetworkAddressBare ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) { pClient->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } - if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) + if ( NetworkUtil::ParseNetworkAddressBare ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, bEnableIPv6 ) ) { pClient->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } diff --git a/src/serverdlg.cpp b/src/serverdlg.cpp index e1a5785b77..330374fed7 100644 --- a/src/serverdlg.cpp +++ b/src/serverdlg.cpp @@ -482,12 +482,14 @@ CServerDlg::CServerDlg ( CServer* pNServP, CServerSettings* pNSetP, const bool b // Send the request to two servers for redundancy if either or both of them // has a higher release version number, the reply will trigger the notification. - if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) + // Don't use SRV resolution when resolving update servers. + + if ( NetworkUtil::ParseNetworkAddressBare ( UPDATECHECK1_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) { pServer->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } - if ( NetworkUtil::ParseNetworkAddress ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) + if ( NetworkUtil::ParseNetworkAddressBare ( UPDATECHECK2_ADDRESS, UpdateServerHostAddress, pServer->IsIPv6Enabled() ) ) { pServer->CreateCLServerListReqVerAndOSMes ( UpdateServerHostAddress ); } From 171818727a2b628036f0583500b9a4d250c37150 Mon Sep 17 00:00:00 2001 From: Tony Mountifield Date: Sat, 24 Jan 2026 17:06:31 +0000 Subject: [PATCH 8/8] Add qmake CONFIG option to disable SRV DNS --- Jamulus.pro | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Jamulus.pro b/Jamulus.pro index fef2109219..28f3bacd74 100644 --- a/Jamulus.pro +++ b/Jamulus.pro @@ -1182,6 +1182,12 @@ contains(CONFIG, "disable_version_check") { DEFINES += DISABLE_VERSION_CHECK } +# disable SRV resolution in DNS if requested (#3556) +contains(CONFIG, "disable_srv_dns") { + message(The use of SRV records in DNS is disabled.) + DEFINES += DISABLE_SRV_DNS +} + # Enable formatting all code via `make clang_format`. # Note: When extending the list of file extensions or when adding new code directories, # be sure to update .github/workflows/coding-style-check.yml and .clang-format-ignore as well.