[System]: HttpListener.CreateSslStream() should always use passed-in callback. (...
authorMartin Baulig <mabaul@microsoft.com>
Thu, 11 May 2017 20:20:38 +0000 (16:20 -0400)
committerGitHub <noreply@github.com>
Thu, 11 May 2017 20:20:38 +0000 (16:20 -0400)
mcs/class/System/System.Net.Security/SslStream.cs
mcs/class/System/System.Net/HttpListener.Mono.cs

index b2f51095a7d9d1ac3be2092cd5bdce993fd85b92..6d61e08dfb1bf659161ca1869175ffa3e70cdb16 100644 (file)
@@ -130,7 +130,7 @@ namespace System.Net.Security
                {
                }
 
-               SslStream (Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
+               internal SslStream (Stream innerStream, bool leaveInnerStreamOpen, MonoTlsProvider provider, MonoTlsSettings settings)
                        : base (innerStream, leaveInnerStreamOpen)
                {
                        this.provider = provider;
index f6c88f02286f575f44980ceeb23240c5aa51ac27..5e673b9d5f0b25b883d97a6d2db6e34298092889 100644 (file)
@@ -100,12 +100,9 @@ namespace System.Net {
                        lock (_internalLock) {
                                if (tlsProvider == null)
                                        tlsProvider = MonoTlsProviderFactory.GetProvider ();
-                               if (tlsSettings == null)
-                                       tlsSettings = MonoTlsSettings.CopyDefaultSettings ();
-                               if (tlsSettings.RemoteCertificateValidationCallback == null)
-                                       tlsSettings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono (callback);
-                               var sslStream = tlsProvider.CreateSslStream (innerStream, ownsStream, tlsSettings);
-                               return sslStream.SslStream;
+                               var settings = (tlsSettings ?? MonoTlsSettings.DefaultSettings).Clone ();
+                               settings.RemoteCertificateValidationCallback = MNS.Private.CallbackHelpers.PublicToMono (callback);
+                               return new SslStream (innerStream, ownsStream, tlsProvider, settings);
                        }
 #else
                        throw new PlatformNotSupportedException ();