Don't crash on connection close if SSL wasn't started.
--- 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 ();
--- 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