From ebbc126b723484dba41ee26e4a32ad6d87413020 Mon Sep 17 00:00:00 2001 From: imaginos Date: Fri, 15 Jan 2010 20:19:02 +0000 Subject: [PATCH] cleanup some, and aggregate common code git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1713 726aef4b-f618-498e-8847-2d620e286838 --- Csocket.cpp | 22 +++++++++++++--------- Csocket.h | 5 ++++- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/Csocket.cpp b/Csocket.cpp index 43ee295f..20901956 100644 --- a/Csocket.cpp +++ b/Csocket.cpp @@ -28,7 +28,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * -* $Revision: 1.119 $ +* $Revision: 1.121 $ */ #include "Csocket.h" @@ -362,6 +362,7 @@ int GetAddrInfo( const CS_STRING & sHostname, Csock *pSock, CSSockAddr & csSockA bFound = true; break; } + pSock->CloseSocksFD(); } else if( bTryConnect ) { @@ -620,6 +621,15 @@ Csock::~Csock() FREE_CTX(); #endif /* HAVE_LIBSSL */ + CloseSocksFD(); + + // delete any left over crons + for( vector::size_type i = 0; i < m_vcCrons.size(); i++ ) + CS_Delete( m_vcCrons[i] ); +} + +void Csock::CloseSocksFD() +{ if ( m_iReadSock != m_iWriteSock ) { if( m_iReadSock >= 0 ) @@ -631,12 +641,9 @@ Csock::~Csock() m_iReadSock = CS_INVALID_SOCK; m_iWriteSock = CS_INVALID_SOCK; - - // delete any left over crons - for( vector::size_type i = 0; i < m_vcCrons.size(); i++ ) - CS_Delete( m_vcCrons[i] ); } + void Csock::Dereference() { m_iWriteSock = m_iReadSock = CS_INVALID_SOCK; @@ -2166,10 +2173,7 @@ int Csock::GetAddrInfo( const CS_STRING & sHostname, CSSockAddr & csSockAddr ) // the Connect() failed, so throw a retry back in with ipv4, and let it process normally CS_DEBUG( "Failed ipv6 connection with PF_UNSPEC, falling back to ipv4" ); m_iARESStatus = -1; - if( m_iReadSock != m_iWriteSock ) - CS_CLOSE( m_iWriteSock ); - CS_CLOSE( m_iReadSock ); - m_iReadSock = m_iWriteSock = CS_INVALID_SOCK; + CloseSocksFD(); SetAFRequire( CSSockAddr::RAF_INET ); return( GetAddrInfo( sHostname, csSockAddr ) ); } diff --git a/Csocket.h b/Csocket.h index 71273452..3e03f022 100644 --- a/Csocket.h +++ b/Csocket.h @@ -28,7 +28,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * -* $Revision: 1.219 $ +* $Revision: 1.221 $ */ // note to compile with win32 need to link to winsock2, using gcc its -lws2_32 @@ -932,6 +932,9 @@ public: return( true ); } + //! puts the socks back to the state they were prior to calling CreateSocksFD + void CloseSocksFD(); + const CS_STRING & GetBindHost() const { return( m_sBindHost ); } void SetBindHost( const CS_STRING & sBindHost ) { m_sBindHost = sBindHost; }