From 1b5ba87bbb80d798bebdf73711a09a846205c19b Mon Sep 17 00:00:00 2001 From: "Chris Ross (ASP.NET)" Date: Fri, 3 Nov 2017 14:33:52 -0700 Subject: [PATCH] Improved request error handling. --- .../AsyncAcceptContext.cs | 6 ++++++ src/Microsoft.AspNetCore.Server.HttpSys/HttpSysListener.cs | 2 +- src/Microsoft.AspNetCore.Server.HttpSys/MessagePump.cs | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.AspNetCore.Server.HttpSys/AsyncAcceptContext.cs b/src/Microsoft.AspNetCore.Server.HttpSys/AsyncAcceptContext.cs index 3057e13..0edc338 100644 --- a/src/Microsoft.AspNetCore.Server.HttpSys/AsyncAcceptContext.cs +++ b/src/Microsoft.AspNetCore.Server.HttpSys/AsyncAcceptContext.cs @@ -6,6 +6,7 @@ using System.Diagnostics.Contracts; using System.Threading; using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; namespace Microsoft.AspNetCore.Server.HttpSys { @@ -79,6 +80,11 @@ private static void IOCompleted(AsyncAcceptContext asyncResult, uint errorCode, complete = true; } } + catch (Exception) + { + server.SendError(asyncResult._nativeRequestContext.RequestId, StatusCodes.Status400BadRequest); + throw; + } finally { if (stoleBlob) diff --git a/src/Microsoft.AspNetCore.Server.HttpSys/HttpSysListener.cs b/src/Microsoft.AspNetCore.Server.HttpSys/HttpSysListener.cs index 56d1e43..24517bb 100644 --- a/src/Microsoft.AspNetCore.Server.HttpSys/HttpSysListener.cs +++ b/src/Microsoft.AspNetCore.Server.HttpSys/HttpSysListener.cs @@ -315,7 +315,7 @@ internal unsafe bool ValidateAuth(NativeRequestContext requestMemory) return true; } - private unsafe void SendError(ulong requestId, int httpStatusCode, IList authChallenges) + internal unsafe void SendError(ulong requestId, int httpStatusCode, IList authChallenges = null) { HttpApi.HTTP_RESPONSE_V2 httpResponse = new HttpApi.HTTP_RESPONSE_V2(); httpResponse.Response_V1.Version = new HttpApi.HTTP_VERSION(); diff --git a/src/Microsoft.AspNetCore.Server.HttpSys/MessagePump.cs b/src/Microsoft.AspNetCore.Server.HttpSys/MessagePump.cs index 82e6a03..8ba9a56 100644 --- a/src/Microsoft.AspNetCore.Server.HttpSys/MessagePump.cs +++ b/src/Microsoft.AspNetCore.Server.HttpSys/MessagePump.cs @@ -165,7 +165,7 @@ private async void ProcessRequestsWorker() { LogHelper.LogException(_logger, "ListenForNextRequestAsync", exception); } - return; + continue; } try {