From 2f516d03a506e5e5ef3fa1b5890a85f310773b18 Mon Sep 17 00:00:00 2001 From: R4SAS Date: Tue, 4 Jun 2019 22:19:26 +0300 Subject: [PATCH] [upnp] fix code --- daemon/UPnP.cpp | 5 ++- daemon/UPnP.h | 105 ++++++++++++++++++++++++------------------------ 2 files changed, 56 insertions(+), 54 deletions(-) diff --git a/daemon/UPnP.cpp b/daemon/UPnP.cpp index e5fd97ec..56ad3cc7 100644 --- a/daemon/UPnP.cpp +++ b/daemon/UPnP.cpp @@ -79,9 +79,10 @@ namespace transport void UPnP::Discover () { + bool isError; + #if (MINIUPNPC_API_VERSION >= 8) int err = UPNPDISCOVER_SUCCESS; - bool isError; #if (MINIUPNPC_API_VERSION >= 14) m_Devlist = upnpDiscover (UPNP_RESPONSE_TIMEOUT, NULL, NULL, 0, 0, 2, &err); @@ -92,7 +93,7 @@ namespace transport isError = err != UPNPDISCOVER_SUCCESS; #else m_Devlist = upnpDiscover (UPNP_RESPONSE_TIMEOUT, NULL, NULL, 0); - isError = err == NULL; + isError = m_Devlist == NULL; #endif { // notify starting thread diff --git a/daemon/UPnP.h b/daemon/UPnP.h index 1feec119..48855f0c 100644 --- a/daemon/UPnP.h +++ b/daemon/UPnP.h @@ -17,72 +17,73 @@ namespace i2p { - namespace transport +namespace transport +{ + const int UPNP_RESPONSE_TIMEOUT = 2000; // in milliseconds + + enum { - const int UPNP_RESPONSE_TIMEOUT = 2000; // in milliseconds + UPNP_IGD_NONE = 0, + UPNP_IGD_VALID_CONNECTED = 1, + UPNP_IGD_VALID_NOT_CONNECTED = 2, + UPNP_IGD_INVALID = 3 + }; - enum - { - UPNP_IGD_NONE = 0, - UPNP_IGD_VALID_CONNECTED = 1, - UPNP_IGD_VALID_NOT_CONNECTED = 2, - UPNP_IGD_INVALID = 3 - }; + class UPnP + { + public: - class UPnP - { - public: + UPnP (); + ~UPnP (); + void Close (); - UPnP (); - ~UPnP (); - void Close (); + void Start (); + void Stop (); - void Start (); - void Stop (); + private: - private: + void Discover (); + int CheckMapping (const char* port, const char* type); + void PortMapping (); + void TryPortMapping (std::shared_ptr address); + void CloseMapping (); + void CloseMapping (std::shared_ptr address); - void Discover (); - int CheckMapping (const char* port, const char* type); - void PortMapping (); - void TryPortMapping (std::shared_ptr address); - void CloseMapping (); - void CloseMapping (std::shared_ptr address); + void Run (); + std::string GetProto (std::shared_ptr address); - void Run (); - std::string GetProto (std::shared_ptr address); + private: - private: + bool m_IsRunning; + std::unique_ptr m_Thread; + std::condition_variable m_Started; + std::mutex m_StartedMutex; + boost::asio::io_service m_Service; + boost::asio::deadline_timer m_Timer; + struct UPNPUrls m_upnpUrls; + struct IGDdatas m_upnpData; - bool m_IsRunning; - std::unique_ptr m_Thread; - std::condition_variable m_Started; - std::mutex m_StartedMutex; - boost::asio::io_service m_Service; - boost::asio::deadline_timer m_Timer; - struct UPNPUrls m_upnpUrls; - struct IGDdatas m_upnpData; - - // For miniupnpc - struct UPNPDev * m_Devlist = 0; - char m_NetworkAddr[64]; - char m_externalIPAddress[40]; - }; - } + // For miniupnpc + struct UPNPDev * m_Devlist = 0; + char m_NetworkAddr[64]; + char m_externalIPAddress[40]; + }; +} } #else // USE_UPNP namespace i2p { - namespace transport { - /* class stub */ - class UPnP { - public: - UPnP () {}; - ~UPnP () {}; - void Start () { LogPrint(eLogWarning, "UPnP: this module was disabled at compile-time"); } - void Stop () {}; - }; - } +namespace transport { + /* class stub */ + class UPnP { + public: + + UPnP () {}; + ~UPnP () {}; + void Start () { LogPrint(eLogWarning, "UPnP: this module was disabled at compile-time"); } + void Stop () {}; + }; +} } #endif // USE_UPNP #endif // __UPNP_H__