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);
|
||||
|
||||
if (m_pDisconnect != NULL)
|
||||
{
|
||||
m_pDisconnect->ResetHandler();
|
||||
m_pDisconnect = NULL;
|
||||
}
|
||||
RemoveRequest();
|
||||
|
||||
FreeResponseBuffers();
|
||||
|
||||
|
|
@ -313,16 +309,8 @@ FORWARDING_HANDLER::OnExecuteRequestHandler()
|
|||
Failure:
|
||||
m_RequestStatus = FORWARDER_DONE;
|
||||
|
||||
//disbale client disconnect callback
|
||||
if (m_pDisconnect != NULL)
|
||||
{
|
||||
if (fHandleSet)
|
||||
{
|
||||
m_pDisconnect->ResetHandler();
|
||||
}
|
||||
m_pDisconnect->CleanupStoredContext();
|
||||
m_pDisconnect = NULL;
|
||||
}
|
||||
//disable client disconnect callback
|
||||
RemoveRequest();
|
||||
|
||||
pResponse->DisableKernelCache();
|
||||
pResponse->GetRawHttpResponse()->EntityChunkCount = 0;
|
||||
|
|
@ -538,11 +526,7 @@ Failure:
|
|||
m_RequestStatus = FORWARDER_DONE;
|
||||
|
||||
//disbale client disconnect callback
|
||||
if (m_pDisconnect != NULL)
|
||||
{
|
||||
m_pDisconnect->ResetHandler();
|
||||
m_pDisconnect = NULL;
|
||||
}
|
||||
RemoveRequest();
|
||||
|
||||
//
|
||||
// Do the right thing based on where the error originated from.
|
||||
|
|
@ -1506,11 +1490,7 @@ Finished:
|
|||
if (m_RequestStatus == FORWARDER_DONE)
|
||||
{
|
||||
//disbale client disconnect callback
|
||||
if (m_pDisconnect != NULL)
|
||||
{
|
||||
m_pDisconnect->ResetHandler();
|
||||
m_pDisconnect = NULL;
|
||||
}
|
||||
RemoveRequest();
|
||||
|
||||
if (m_hRequest != NULL)
|
||||
{
|
||||
|
|
@ -2598,6 +2578,20 @@ SetCookie:
|
|||
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
|
||||
FORWARDING_HANDLER::TerminateRequest(
|
||||
bool fClientInitiated
|
||||
|
|
|
|||
|
|
@ -157,6 +157,11 @@ private:
|
|||
_Inout_ DWORD * pcchHeaders
|
||||
);
|
||||
|
||||
VOID
|
||||
RemoveRequest(
|
||||
VOID
|
||||
);
|
||||
|
||||
DWORD m_Signature;
|
||||
//
|
||||
// WinHTTP request handle is protected using a read-write lock.
|
||||
|
|
|
|||
Loading…
Reference in New Issue