Don't crash on connection close if SSL wasn't started.
authorSenko Rasic <senko.rasic@collabora.co.uk>
Tue, 30 Oct 2007 01:23:54 +0100
changeset 301 e83880152e77
parent 300 ce78172edafd
child 302 07e6d94f5032
Don't crash on connection close if SSL wasn't started.
loudmouth/lm-ssl-gnutls.c
loudmouth/lm-ssl-openssl.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 ();
--- 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