Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/referencesource/System/net/System/Net/HttpListener.cs')
-rw-r--r--mcs/class/referencesource/System/net/System/Net/HttpListener.cs26
1 files changed, 13 insertions, 13 deletions
diff --git a/mcs/class/referencesource/System/net/System/Net/HttpListener.cs b/mcs/class/referencesource/System/net/System/Net/HttpListener.cs
index 829540fabad..c7d9b1d7aa0 100644
--- a/mcs/class/referencesource/System/net/System/Net/HttpListener.cs
+++ b/mcs/class/referencesource/System/net/System/Net/HttpListener.cs
@@ -285,14 +285,14 @@ namespace System.Net {
private static readonly int RequestChannelBindStatusSize =
Marshal.SizeOf(typeof(UnsafeNclNativeMethods.HttpApi.HTTP_REQUEST_CHANNEL_BIND_STATUS));
- // Win8# 559317 fixed a
-
-
-
-
-
-
-
+ // Win8# 559317 fixed a bug in Http.sys's HttpReceiveClientCertificate method.
+ // Without this fix IOCP callbacks were not being called although ERROR_IO_PENDING was
+ // returned from HttpReceiveClientCertificate when using the
+ // FileCompletionNotificationModes.SkipCompletionPortOnSuccess flag.
+ // This bug was only hit when the buffer passed into HttpReceiveClientCertificate
+ // (1500 bytes initially) is tool small for the certificate.
+ // Due to this bug in downlevel operating systems the FileCompletionNotificationModes.SkipCompletionPortOnSuccess
+ // flag is only used on Win8 and later.
internal static readonly bool SkipIOCPCallbackOnSuccess = ComNetOS.IsWin8orLater;
// Mitigate potential DOS attacks by limiting the number of unknown headers we accept. Numerous header names
@@ -1564,8 +1564,8 @@ namespace System.Net {
outBlob = context.GetOutgoingDigestBlob(inBlob, verb, null, Realm, false, false, out statusCodeNew);
GlobalLog.Print("HttpListener#" + ValidationHelper.HashString(this) + "::HandleAuthentication() GetOutgoingDigestBlob() returned IsCompleted:" + context.IsCompleted + " statusCodeNew:" + statusCodeNew + " outBlob:[" + outBlob + "]");
- // WDigest
-
+ // WDigest bug: sometimes when AcceptSecurityContext returns success, it provides a bogus, empty 4k buffer.
+ // Ignore it. (Should find out what's going on here from WDigest people.)
if (statusCodeNew == SecurityStatus.OK)
{
outBlob = null;
@@ -1654,9 +1654,9 @@ namespace System.Net {
error = !context.IsValidContext;
if (error)
{
- //
-
-
+ // Bug #474228: SSPI Workaround
+ // If a client sends up a blob on the initial request, Negotiate returns SEC_E_INVALID_HANDLE
+ // when it should return SEC_E_INVALID_TOKEN.
if (statusCodeNew == SecurityStatus.InvalidHandle && oldContext == null && bytes != null && bytes.Length > 0)
{
statusCodeNew = SecurityStatus.InvalidToken;