Update RecycleApplication function (#634)
removing hostingmodel input from recycleapplication call and fix memory leak in recycle out of process application
This commit is contained in:
parent
0e28f34c1a
commit
f32addd408
|
|
@ -142,12 +142,6 @@ public:
|
|||
pApplication->DereferenceApplication();
|
||||
}
|
||||
|
||||
VOID
|
||||
ClearApplication()
|
||||
{
|
||||
m_pApplication = NULL;
|
||||
}
|
||||
|
||||
HRESULT
|
||||
EnsureApplicationCreated();
|
||||
|
||||
|
|
|
|||
|
|
@ -58,8 +58,7 @@ public:
|
|||
static
|
||||
VOID
|
||||
RecycleApplication(
|
||||
_In_ APPLICATION_INFO * pEntry,
|
||||
_In_ APP_HOSTING_MODEL hostingModel
|
||||
_In_ APPLICATION_INFO * pEntry
|
||||
);
|
||||
|
||||
static
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ APPLICATION_INFO::UpdateAppOfflineFileHandle()
|
|||
strEventMsg.QueryStr());
|
||||
}
|
||||
|
||||
APPLICATION_MANAGER::RecycleApplication(this, m_pConfiguration->QueryHostingModel());
|
||||
APPLICATION_MANAGER::RecycleApplication(this);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -370,7 +370,7 @@ APPLICATION_MANAGER::RecycleApplicationFromManager(
|
|||
DBG_ASSERT(pRecord != NULL);
|
||||
|
||||
// RecycleApplication is called on a separate thread.
|
||||
RecycleApplication(pRecord, m_hostingModel);
|
||||
RecycleApplication(pRecord);
|
||||
pRecord->DereferenceApplicationInfo();
|
||||
path = context.MultiSz.Next(path);
|
||||
}
|
||||
|
|
@ -480,19 +480,21 @@ APPLICATION_MANAGER::DoRecycleApplication(
|
|||
// static
|
||||
VOID
|
||||
APPLICATION_MANAGER::RecycleApplication(
|
||||
_In_ APPLICATION_INFO * pEntry,
|
||||
_In_ APP_HOSTING_MODEL hostingModel
|
||||
_In_ APPLICATION_INFO * pEntry
|
||||
)
|
||||
{
|
||||
|
||||
APPLICATION* pApplication = pEntry->QueryApplication();
|
||||
DBG_ASSERT(pApplication != NULL);
|
||||
|
||||
// Reference the application first
|
||||
pApplication->ReferenceApplication();
|
||||
|
||||
if (hostingModel == APP_HOSTING_MODEL::HOSTING_OUT_PROCESS)
|
||||
if (pApplication->QueryConfig()->QueryHostingModel() == HOSTING_OUT_PROCESS)
|
||||
{
|
||||
pEntry->ClearApplication();
|
||||
// Need to set m_pApplication to NULL first
|
||||
// to avoid mapping new request to the recycled application
|
||||
// A new application instance will be created for new request
|
||||
pEntry->ClearAndDereferenceApplication();
|
||||
}
|
||||
|
||||
// Reset application pointer to NULL
|
||||
|
|
@ -505,6 +507,5 @@ APPLICATION_MANAGER::RecycleApplication(
|
|||
0, // default creation flags
|
||||
NULL); // receive thread identifier
|
||||
|
||||
|
||||
CloseHandle(hThread);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue