From 4569d6d6d53aafd355da6acc91056f84e9f284a7 Mon Sep 17 00:00:00 2001 From: pan-wang Date: Mon, 31 Oct 2016 13:03:13 -0700 Subject: [PATCH] fix issue #26 AspNetCoreModule needs to abort failed responses (#34) --- src/AspNetCore/Inc/forwardinghandler.h | 1 + src/AspNetCore/Src/dllmain.cpp | 2 +- src/AspNetCore/Src/forwardinghandler.cxx | 12 ++++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/AspNetCore/Inc/forwardinghandler.h b/src/AspNetCore/Inc/forwardinghandler.h index 06fde91cee..bc655526be 100644 --- a/src/AspNetCore/Inc/forwardinghandler.h +++ b/src/AspNetCore/Inc/forwardinghandler.h @@ -27,6 +27,7 @@ enum FORWARDING_REQUEST_STATUS FORWARDER_SENDING_REQUEST, FORWARDER_RECEIVING_RESPONSE, FORWARDER_RECEIVED_WEBSOCKET_RESPONSE, + FORWARDER_RESET_CONNECTION, FORWARDER_DONE }; diff --git a/src/AspNetCore/Src/dllmain.cpp b/src/AspNetCore/Src/dllmain.cpp index d71c296888..c69c435682 100644 --- a/src/AspNetCore/Src/dllmain.cpp +++ b/src/AspNetCore/Src/dllmain.cpp @@ -51,7 +51,7 @@ VOID HKEY hKey; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, - L"SOFTWARE\\Microsoft\\IIS Extensions\\AspNetCore Module\\Parameters", + L"SOFTWARE\\Microsoft\\IIS Extensions\\IIS AspNetCore Module\\Parameters", 0, KEY_READ, &hKey) == NO_ERROR) diff --git a/src/AspNetCore/Src/forwardinghandler.cxx b/src/AspNetCore/Src/forwardinghandler.cxx index 6e4f37c0d2..0fe0ea9e2c 100644 --- a/src/AspNetCore/Src/forwardinghandler.cxx +++ b/src/AspNetCore/Src/forwardinghandler.cxx @@ -1591,6 +1591,12 @@ Return Value: retVal = RQ_NOTIFICATION_PENDING; goto Finished; } + else if (m_RequestStatus == FORWARDER_RESET_CONNECTION) + { + hr = HRESULT_FROM_WIN32(ERROR_WINHTTP_INVALID_SERVER_RESPONSE); + goto Failure; + + } // // Begins normal completion handling. There is already a shared acquired @@ -2185,6 +2191,12 @@ None Failure: + if (hr == HRESULT_FROM_WIN32(ERROR_WINHTTP_INVALID_SERVER_RESPONSE)) + { + m_RequestStatus = FORWARDER_RESET_CONNECTION; + goto Finished; + } + m_RequestStatus = FORWARDER_DONE; pResponse->DisableKernelCache();