|
|
@ -49,7 +49,9 @@ namespace transport |
|
|
|
m_IsRunning = true; |
|
|
|
m_IsRunning = true; |
|
|
|
LogPrint(eLogInfo, "UPnP: starting"); |
|
|
|
LogPrint(eLogInfo, "UPnP: starting"); |
|
|
|
m_Service.post (std::bind (&UPnP::Discover, this)); |
|
|
|
m_Service.post (std::bind (&UPnP::Discover, this)); |
|
|
|
|
|
|
|
std::unique_lock<std::mutex> l(m_StartedMutex); |
|
|
|
m_Thread.reset (new std::thread (std::bind (&UPnP::Run, this))); |
|
|
|
m_Thread.reset (new std::thread (std::bind (&UPnP::Run, this))); |
|
|
|
|
|
|
|
m_Started.wait_for (l, std::chrono::seconds (5)); // 5 seconds maximum
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
UPnP::~UPnP () |
|
|
|
UPnP::~UPnP () |
|
|
@ -80,6 +82,11 @@ namespace transport |
|
|
|
#else |
|
|
|
#else |
|
|
|
m_Devlist = upnpDiscover (2000, m_MulticastIf, m_Minissdpdpath, 0, 0, &nerror); |
|
|
|
m_Devlist = upnpDiscover (2000, m_MulticastIf, m_Minissdpdpath, 0, 0, &nerror); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// notify satrting thread
|
|
|
|
|
|
|
|
std::unique_lock<std::mutex> l(m_StartedMutex); |
|
|
|
|
|
|
|
m_Started.notify_all (); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int r; |
|
|
|
int r; |
|
|
|
r = UPNP_GetValidIGD (m_Devlist, &m_upnpUrls, &m_upnpData, m_NetworkAddr, sizeof (m_NetworkAddr)); |
|
|
|
r = UPNP_GetValidIGD (m_Devlist, &m_upnpUrls, &m_upnpData, m_NetworkAddr, sizeof (m_NetworkAddr)); |
|
|
|