fixing a stress issue (#619)
This commit is contained in:
parent
f954e9548b
commit
cbffeb33ea
|
|
@ -61,11 +61,7 @@ FORWARDING_HANDLER::~FORWARDING_HANDLER(
|
||||||
//
|
//
|
||||||
DBG_ASSERT(m_pDisconnect == NULL);
|
DBG_ASSERT(m_pDisconnect == NULL);
|
||||||
|
|
||||||
if (m_pDisconnect != NULL)
|
RemoveRequest();
|
||||||
{
|
|
||||||
m_pDisconnect->ResetHandler();
|
|
||||||
m_pDisconnect = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
FreeResponseBuffers();
|
FreeResponseBuffers();
|
||||||
|
|
||||||
|
|
@ -313,16 +309,8 @@ FORWARDING_HANDLER::OnExecuteRequestHandler()
|
||||||
Failure:
|
Failure:
|
||||||
m_RequestStatus = FORWARDER_DONE;
|
m_RequestStatus = FORWARDER_DONE;
|
||||||
|
|
||||||
//disbale client disconnect callback
|
//disable client disconnect callback
|
||||||
if (m_pDisconnect != NULL)
|
RemoveRequest();
|
||||||
{
|
|
||||||
if (fHandleSet)
|
|
||||||
{
|
|
||||||
m_pDisconnect->ResetHandler();
|
|
||||||
}
|
|
||||||
m_pDisconnect->CleanupStoredContext();
|
|
||||||
m_pDisconnect = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
pResponse->DisableKernelCache();
|
pResponse->DisableKernelCache();
|
||||||
pResponse->GetRawHttpResponse()->EntityChunkCount = 0;
|
pResponse->GetRawHttpResponse()->EntityChunkCount = 0;
|
||||||
|
|
@ -538,11 +526,7 @@ Failure:
|
||||||
m_RequestStatus = FORWARDER_DONE;
|
m_RequestStatus = FORWARDER_DONE;
|
||||||
|
|
||||||
//disbale client disconnect callback
|
//disbale client disconnect callback
|
||||||
if (m_pDisconnect != NULL)
|
RemoveRequest();
|
||||||
{
|
|
||||||
m_pDisconnect->ResetHandler();
|
|
||||||
m_pDisconnect = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Do the right thing based on where the error originated from.
|
// Do the right thing based on where the error originated from.
|
||||||
|
|
@ -1506,11 +1490,7 @@ Finished:
|
||||||
if (m_RequestStatus == FORWARDER_DONE)
|
if (m_RequestStatus == FORWARDER_DONE)
|
||||||
{
|
{
|
||||||
//disbale client disconnect callback
|
//disbale client disconnect callback
|
||||||
if (m_pDisconnect != NULL)
|
RemoveRequest();
|
||||||
{
|
|
||||||
m_pDisconnect->ResetHandler();
|
|
||||||
m_pDisconnect = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_hRequest != NULL)
|
if (m_hRequest != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -2598,6 +2578,20 @@ SetCookie:
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
FORWARDING_HANDLER::RemoveRequest(
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
ASYNC_DISCONNECT_CONTEXT * pDisconnect;
|
||||||
|
pDisconnect = (ASYNC_DISCONNECT_CONTEXT *)InterlockedExchangePointer((PVOID*)&m_pDisconnect, NULL);
|
||||||
|
if (pDisconnect != NULL)
|
||||||
|
{
|
||||||
|
pDisconnect->ResetHandler();
|
||||||
|
pDisconnect = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
FORWARDING_HANDLER::TerminateRequest(
|
FORWARDING_HANDLER::TerminateRequest(
|
||||||
bool fClientInitiated
|
bool fClientInitiated
|
||||||
|
|
|
||||||
|
|
@ -157,6 +157,11 @@ private:
|
||||||
_Inout_ DWORD * pcchHeaders
|
_Inout_ DWORD * pcchHeaders
|
||||||
);
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
RemoveRequest(
|
||||||
|
VOID
|
||||||
|
);
|
||||||
|
|
||||||
DWORD m_Signature;
|
DWORD m_Signature;
|
||||||
//
|
//
|
||||||
// WinHTTP request handle is protected using a read-write lock.
|
// WinHTTP request handle is protected using a read-write lock.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue