From 1ea36298d2677733f36bae1cc6f72196c6395a4e Mon Sep 17 00:00:00 2001 From: peterbell10 Date: Tue, 20 Feb 2018 17:08:46 +0000 Subject: Fix cUrlClient leak (#4125) Fixes #4040 * The TCP connection is now shutdown after OnBodyFinished * Any open connections are closed when cNetworkSingleton::Terminate() is called. * Removed ownership cycles in cUrlClientRequest * Added a check to the test to ensure there are no leaks. --- src/OSSupport/NetworkSingleton.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/OSSupport/NetworkSingleton.h') diff --git a/src/OSSupport/NetworkSingleton.h b/src/OSSupport/NetworkSingleton.h index 902c62550..5f3c11720 100644 --- a/src/OSSupport/NetworkSingleton.h +++ b/src/OSSupport/NetworkSingleton.h @@ -24,12 +24,12 @@ // fwd: struct event_base; -class cTCPLinkImpl; -typedef std::shared_ptr cTCPLinkImplPtr; -typedef std::vector cTCPLinkImplPtrs; -class cServerHandleImpl; -typedef std::shared_ptr cServerHandleImplPtr; -typedef std::vector cServerHandleImplPtrs; +class cTCPLink; +typedef std::shared_ptr cTCPLinkPtr; +typedef std::vector cTCPLinkPtrs; +class cServerHandle; +typedef std::shared_ptr cServerHandlePtr; +typedef std::vector cServerHandlePtrs; @@ -61,20 +61,20 @@ public: /** Adds the specified link to m_Connections. Used by the underlying link implementation when a new link is created. */ - void AddLink(cTCPLinkImplPtr a_Link); + void AddLink(cTCPLinkPtr a_Link); /** Removes the specified link from m_Connections. Used by the underlying link implementation when the link is closed / errored. */ - void RemoveLink(const cTCPLinkImpl * a_Link); + void RemoveLink(const cTCPLink * a_Link); /** Adds the specified link to m_Servers. Used by the underlying server handle implementation when a new listening server is created. Only servers that succeed in listening are added. */ - void AddServer(cServerHandleImplPtr a_Server); + void AddServer(cServerHandlePtr a_Server); /** Removes the specified server from m_Servers. Used by the underlying server handle implementation when the server is closed. */ - void RemoveServer(const cServerHandleImpl * a_Server); + void RemoveServer(const cServerHandle * a_Server); protected: @@ -82,10 +82,10 @@ protected: event_base * m_EventBase; /** Container for all client connections, including ones with pending-connect. */ - cTCPLinkImplPtrs m_Connections; + cTCPLinkPtrs m_Connections; /** Container for all servers that are currently active. */ - cServerHandleImplPtrs m_Servers; + cServerHandlePtrs m_Servers; /** Mutex protecting all containers against multithreaded access. */ cCriticalSection m_CS; -- cgit v1.2.3