upnp: expose interface configuration on UpnpInit2()
Adds the Interface Name as an argument to the *Init functions to make it possible to select which interface is used by upnp to detect servers. Currently "nullptr" is passed in to let the upnp library select an interface, as before.
This commit is contained in:
@@ -57,9 +57,9 @@ DoInit()
|
||||
}
|
||||
|
||||
UpnpClient_Handle
|
||||
UpnpClientGlobalInit()
|
||||
UpnpClientGlobalInit(const char* iface)
|
||||
{
|
||||
UpnpGlobalInit();
|
||||
UpnpGlobalInit(iface);
|
||||
|
||||
try {
|
||||
const std::lock_guard<Mutex> protect(upnp_client_init_mutex);
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#include "Compat.hxx"
|
||||
|
||||
UpnpClient_Handle
|
||||
UpnpClientGlobalInit();
|
||||
UpnpClientGlobalInit(const char* iface);
|
||||
|
||||
void
|
||||
UpnpClientGlobalFinish() noexcept;
|
||||
|
@@ -33,12 +33,13 @@ static Mutex upnp_init_mutex;
|
||||
static unsigned upnp_ref;
|
||||
|
||||
static void
|
||||
DoInit()
|
||||
DoInit(const char* iface)
|
||||
{
|
||||
|
||||
#ifdef UPNP_ENABLE_IPV6
|
||||
auto code = UpnpInit2(nullptr, 0);
|
||||
auto code = UpnpInit2(iface, 0);
|
||||
#else
|
||||
auto code = UpnpInit(nullptr, 0);
|
||||
auto code = UpnpInit(iface, 0);
|
||||
#endif
|
||||
if (code != UPNP_E_SUCCESS)
|
||||
throw FormatRuntimeError("UpnpInit() failed: %s",
|
||||
@@ -53,12 +54,12 @@ DoInit()
|
||||
}
|
||||
|
||||
void
|
||||
UpnpGlobalInit()
|
||||
UpnpGlobalInit(const char* iface)
|
||||
{
|
||||
const std::lock_guard<Mutex> protect(upnp_init_mutex);
|
||||
|
||||
if (upnp_ref == 0)
|
||||
DoInit();
|
||||
DoInit(iface);
|
||||
|
||||
++upnp_ref;
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@
|
||||
#define MPD_UPNP_INIT_HXX
|
||||
|
||||
void
|
||||
UpnpGlobalInit();
|
||||
UpnpGlobalInit(const char* iface);
|
||||
|
||||
void
|
||||
UpnpGlobalFinish() noexcept;
|
||||
|
Reference in New Issue
Block a user