Fix for race bug in WSMan command plugin instance close operation (#3203)

This commit is contained in:
Paul Higinbotham
2017-02-27 15:15:58 -08:00
committed by Dongbo Wang
parent 8cf7989b53
commit 136213d6b4
2 changed files with 6 additions and 4 deletions
@@ -473,15 +473,13 @@ namespace System.Management.Automation.Remoting
return;
}
SetThreadProperties(mgdShellSession.creationRequestDetails);
// update the internal data store only if this is not receive operation.
if (!context.isReceiveOperation)
{
DeleteFromActiveShellSessions(context.shellContext);
}
string errorMsg = StringUtil.Format(RemotingErrorIdStrings.WSManPluginOperationClose);
System.Exception reasonForClose = new System.Exception(errorMsg);
System.Exception reasonForClose = new System.Exception(RemotingErrorIdStrings.WSManPluginOperationClose);
mgdShellSession.CloseOperation(context, reasonForClose);
}
@@ -502,7 +500,7 @@ namespace System.Management.Automation.Remoting
//Dbg.Assert(false, "context.shellContext not matched");
return;
}
SetThreadProperties(mgdShellSession.creationRequestDetails);
mgdShellSession.CloseCommandOperation(context);
}
@@ -698,6 +698,8 @@ namespace System.Management.Automation.Remoting
}
}
WSManPluginInstance.SetThreadProperties(creationRequestDetails);
bool isRcvOpShuttingDown = (context.isShuttingDown) && (context.isReceiveOperation);
bool isRcvOp = context.isReceiveOperation;
bool isShuttingDown = context.isShuttingDown;
@@ -797,6 +799,8 @@ namespace System.Management.Automation.Remoting
}
}
WSManPluginInstance.SetThreadProperties(creationRequestDetails);
bool isRcvOp = context.isReceiveOperation;
// only one thread will be here.
bool isRcvOpShuttingDown = (context.isShuttingDown) &&