diff options
| author | Silas Sewell | 2010-06-01 14:18:21 -0600 |
|---|---|---|
| committer | Adam Vandenberg | 2010-06-16 10:08:26 -0700 |
| commit | aea6138526da7c6c74fc2abec121eabb87f504d2 (patch) | |
| tree | 6a319e0ca5b5ac014d3b6bf3636e36ac32c288f8 | |
| parent | 53176a5c1378780c06cc7b12a2bb0eb2c662cc04 (diff) | |
| download | homebrew-aea6138526da7c6c74fc2abec121eabb87f504d2.tar.bz2 | |
Fix depends_on and memory leak
Signed-off-by: Adam Vandenberg <flangy@gmail.com>
| -rw-r--r-- | Library/Formula/gloox.rb | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/Library/Formula/gloox.rb b/Library/Formula/gloox.rb index ebcab075e..56c9570e8 100644 --- a/Library/Formula/gloox.rb +++ b/Library/Formula/gloox.rb @@ -5,6 +5,15 @@ class Gloox <Formula homepage 'http://camaya.net/glooxdownload' md5 'f8eacf1c6476e0a309b453fd04f90e31' + depends_on 'gnutls' + depends_on 'pkg-config' + + def patches + # Fix memory leak + # http://bugs.camaya.net/horde/whups/ticket/?id=181 + DATA + end + def install system "./configure", "--without-openssl", "--with-gnutls", @@ -13,4 +22,57 @@ class Gloox <Formula "--prefix=#{prefix}" system "make install" end -end
\ No newline at end of file +end + +__END__ +diff --git a/src/tlsgnutlsbase.cpp b/src/tlsgnutlsbase.cpp +index d98c802..37f702d 100644 +--- a/src/tlsgnutlsbase.cpp ++++ b/src/tlsgnutlsbase.cpp +@@ -97,7 +97,7 @@ namespace gloox + gnutls_bye( *m_session, GNUTLS_SHUT_RDWR ); + gnutls_db_remove_session( *m_session ); + gnutls_credentials_clear( *m_session ); +- if( m_secure ) ++ if( m_session ) + gnutls_deinit( *m_session ); + + m_secure = false; +diff --git a/src/tlsgnutlsclient.cpp b/src/tlsgnutlsclient.cpp +index c1d24c2..d250f32 100644 +--- a/src/tlsgnutlsclient.cpp ++++ b/src/tlsgnutlsclient.cpp +@@ -33,6 +33,8 @@ namespace gloox + void GnuTLSClient::cleanup() + { + GnuTLSBase::cleanup(); ++ if (m_credentials) ++ gnutls_certificate_free_credentials( m_credentials ); + init(); + } + +@@ -120,6 +122,7 @@ namespace gloox + m_certInfo.status |= CertSignerNotCa; + const gnutls_datum_t* certList = 0; + unsigned int certListSize; ++ unsigned int certListSizeFull; + if( !error && ( ( certList = gnutls_certificate_get_peers( *m_session, &certListSize ) ) == 0 ) ) + error = true; + +@@ -131,6 +134,7 @@ namespace gloox + error = true; + } + ++ certListSizeFull = certListSize; + if( ( gnutls_x509_crt_check_issuer( cert[certListSize-1], cert[certListSize-1] ) > 0 ) + && certListSize > 0 ) + certListSize--; +@@ -189,7 +193,7 @@ namespace gloox + if( !gnutls_x509_crt_check_hostname( cert[0], m_server.c_str() ) ) + m_certInfo.status |= CertWrongPeer; + +- for( unsigned int i = 0; i < certListSize; ++i ) ++ for( unsigned int i = 0; i < certListSizeFull; ++i ) + gnutls_x509_crt_deinit( cert[i] ); + + delete[] cert; |
