fix a massive memory leak in MonoBtlsContext
[mono.git] / mcs / class / System / Mono.Btls / MonoBtlsContext.cs
index e4054a173c8d3e5c221b5bbb2f6a4995a52f2237..82b0e8ca05a1b8a7e984a3564cff598e8dd45176 100644 (file)
@@ -365,7 +365,23 @@ namespace Mono.Btls
                public override void Close ()
                {
                        Debug ("Close!");
-                       ssl.Dispose ();
+
+                       if (ssl != null) {
+                               ssl.Dispose ();
+                               ssl = null;
+                       }
+                       if (ctx != null) {
+                               ctx.Dispose ();
+                               ctx = null;
+                       }
+                       if (bio != null) {
+                               bio.Dispose ();
+                               bio = null;
+                       }
+                       if (errbio != null) {
+                               errbio.Dispose ();
+                               errbio = null;
+                       }
                }
 
                void Dispose<T> (ref T disposable)