# HG changeset patch # User Senko Rasic # Date 1193703834 -3600 # Node ID e83880152e770f51938eb92e78a36e4a4f72d270 # Parent ce78172edafd9c0b91f418c1c4a3d0b6e2212b69 Don't crash on connection close if SSL wasn't started. diff -r ce78172edafd -r e83880152e77 loudmouth/lm-ssl-gnutls.c --- a/loudmouth/lm-ssl-gnutls.c Tue Oct 30 00:24:57 2007 +0100 +++ b/loudmouth/lm-ssl-gnutls.c Tue Oct 30 01:23:54 2007 +0100 @@ -38,6 +38,7 @@ gnutls_session gnutls_session; gnutls_certificate_credentials gnutls_xcred; + gboolean started; }; static gboolean ssl_verify_certificate (LmSSL *ssl, @@ -231,7 +232,9 @@ return FALSE; } - + + ssl->started = TRUE; + return TRUE; } @@ -283,6 +286,9 @@ void _lm_ssl_close (LmSSL *ssl) { + if (!ssl->started) + return; + gnutls_deinit (ssl->gnutls_session); gnutls_certificate_free_credentials (ssl->gnutls_xcred); gnutls_global_deinit (); diff -r ce78172edafd -r e83880152e77 loudmouth/lm-ssl-openssl.c --- a/loudmouth/lm-ssl-openssl.c Tue Oct 30 00:24:57 2007 +0100 +++ b/loudmouth/lm-ssl-openssl.c Tue Oct 30 01:23:54 2007 +0100 @@ -406,9 +406,11 @@ void _lm_ssl_close (LmSSL *ssl) { - SSL_shutdown(ssl->ssl); - SSL_free(ssl->ssl); - ssl->ssl = NULL; + if (ssl->ssl != NULL) { + SSL_shutdown(ssl->ssl); + SSL_free(ssl->ssl); + ssl->ssl = NULL; + } } void