Free environment variable table in inprocess application (#1254)
This commit is contained in:
parent
84d4627b8b
commit
a1e8b3a9af
|
|
@ -259,7 +259,6 @@ IN_PROCESS_APPLICATION::LoadManagedApplication
|
||||||
// Set up stdout redirect
|
// Set up stdout redirect
|
||||||
|
|
||||||
SRWExclusiveLock lock(m_stateLock);
|
SRWExclusiveLock lock(m_stateLock);
|
||||||
|
|
||||||
if (m_pLoggerProvider == NULL)
|
if (m_pLoggerProvider == NULL)
|
||||||
{
|
{
|
||||||
hr = LoggingHelpers::CreateLoggingProvider(
|
hr = LoggingHelpers::CreateLoggingProvider(
|
||||||
|
|
@ -394,28 +393,22 @@ IN_PROCESS_APPLICATION::SetEnvironementVariablesOnWorkerProcess(
|
||||||
{
|
{
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
ENVIRONMENT_VAR_HASH* pHashTable = NULL;
|
ENVIRONMENT_VAR_HASH* pHashTable = NULL;
|
||||||
if (FAILED(hr = ENVIRONMENT_VAR_HELPERS::InitEnvironmentVariablesTable(
|
std::unique_ptr<ENVIRONMENT_VAR_HASH, ENVIRONMENT_VAR_HASH_DELETER> table;
|
||||||
|
RETURN_IF_FAILED(hr = ENVIRONMENT_VAR_HELPERS::InitEnvironmentVariablesTable(
|
||||||
m_pConfig->QueryEnvironmentVariables(),
|
m_pConfig->QueryEnvironmentVariables(),
|
||||||
m_pConfig->QueryWindowsAuthEnabled(),
|
m_pConfig->QueryWindowsAuthEnabled(),
|
||||||
m_pConfig->QueryBasicAuthEnabled(),
|
m_pConfig->QueryBasicAuthEnabled(),
|
||||||
m_pConfig->QueryAnonymousAuthEnabled(),
|
m_pConfig->QueryAnonymousAuthEnabled(),
|
||||||
&pHashTable)))
|
&pHashTable));
|
||||||
{
|
|
||||||
goto Finished;
|
|
||||||
}
|
|
||||||
|
|
||||||
pHashTable->Apply(ENVIRONMENT_VAR_HELPERS::AppendEnvironmentVariables, &hr);
|
table.reset(pHashTable);
|
||||||
if (FAILED(hr))
|
|
||||||
{
|
table->Apply(ENVIRONMENT_VAR_HELPERS::AppendEnvironmentVariables, &hr);
|
||||||
goto Finished;
|
RETURN_IF_FAILED(hr);
|
||||||
}
|
|
||||||
pHashTable->Apply(ENVIRONMENT_VAR_HELPERS::SetEnvironmentVariables, &hr);
|
table->Apply(ENVIRONMENT_VAR_HELPERS::SetEnvironmentVariables, &hr);
|
||||||
if (FAILED(hr))
|
RETURN_IF_FAILED(hr);
|
||||||
{
|
return S_OK;
|
||||||
goto Finished;
|
|
||||||
}
|
|
||||||
Finished:
|
|
||||||
return hr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ private:
|
||||||
mutable LONG _cRefs;
|
mutable LONG _cRefs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class ENVIRONMENT_VAR_HASH : public HASH_TABLE<ENVIRONMENT_VAR_ENTRY, PWSTR>
|
class ENVIRONMENT_VAR_HASH : public HASH_TABLE<ENVIRONMENT_VAR_ENTRY, PWSTR>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -129,3 +130,12 @@ private:
|
||||||
ENVIRONMENT_VAR_HASH(const ENVIRONMENT_VAR_HASH &);
|
ENVIRONMENT_VAR_HASH(const ENVIRONMENT_VAR_HASH &);
|
||||||
void operator=(const ENVIRONMENT_VAR_HASH &);
|
void operator=(const ENVIRONMENT_VAR_HASH &);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ENVIRONMENT_VAR_HASH_DELETER
|
||||||
|
{
|
||||||
|
void operator ()(ENVIRONMENT_VAR_HASH* hashTable) const
|
||||||
|
{
|
||||||
|
hashTable->Clear();
|
||||||
|
delete hashTable;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,7 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting.IIS
|
||||||
throw new InvalidOperationException("Site not stopped yet");
|
throw new InvalidOperationException("Site not stopped yet");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (appPool.WorkerProcesses.Any(wp => wp.State == WorkerProcessState.Running ||
|
if (appPool.WorkerProcesses != null && appPool.WorkerProcesses.Any(wp => wp.State == WorkerProcessState.Running ||
|
||||||
wp.State == WorkerProcessState.Stopping))
|
wp.State == WorkerProcessState.Stopping))
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("WorkerProcess not stopped yet");
|
throw new InvalidOperationException("WorkerProcess not stopped yet");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue