Browse Source

- Fixed a mutex lock in UPnP code

adaptive-webui-19844
Christophe Dumez 18 years ago
parent
commit
04a716ac91
  1. 7
      src/UPnP.cpp
  2. 2
      src/UPnP.h

7
src/UPnP.cpp

@ -1033,7 +1033,9 @@ m_UPnPPort(udpPort)
// Lock it again, so that we block. Unlocking will only happen // Lock it again, so that we block. Unlocking will only happen
// when the UPNP_DISCOVERY_SEARCH_TIMEOUT event occurs at the // when the UPNP_DISCOVERY_SEARCH_TIMEOUT event occurs at the
// callback. // callback.
QMutexLocker lock(&m_WaitForSearchTimeout); searchTimeoutCondition.wait(&m_WaitForSearchTimeout);
// QMutexLocker lock(&m_WaitForSearchTimeout);s
m_WaitForSearchTimeout.unlock();
} }
return; return;
@ -1364,7 +1366,8 @@ upnpDiscovery:
qDebug("UPnP: %s", msg.str().c_str()); qDebug("UPnP: %s", msg.str().c_str());
// Unlock the search timeout mutex // Unlock the search timeout mutex
upnpCP->m_WaitForSearchTimeout.unlock(); // upnpCP->m_WaitForSearchTimeout.unlock();
upnpCP->searchTimeoutCondition.wakeOne();
break; break;
} }

2
src/UPnP.h

@ -45,6 +45,7 @@
extern std::string stdEmptyString; extern std::string stdEmptyString;
#endif // UPNP_C #endif // UPNP_C
#include <QWaitCondition>
/** /**
* Case insensitive std::string comparison * Case insensitive std::string comparison
@ -640,6 +641,7 @@ private:
bool m_IGWDeviceDetected; bool m_IGWDeviceDetected;
CUPnPService *m_WanService; CUPnPService *m_WanService;
QMutex m_WaitForSearchTimeout; QMutex m_WaitForSearchTimeout;
QWaitCondition searchTimeoutCondition;
unsigned short m_UPnPPort; unsigned short m_UPnPPort;
public: public:

Loading…
Cancel
Save