Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs')
-rw-r--r--mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs14
1 files changed, 7 insertions, 7 deletions
diff --git a/mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs b/mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs
index 24affab6135..2bbdf1b4f3a 100644
--- a/mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs
+++ b/mcs/class/referencesource/System.Web/LegacyAspNetSynchronizationContext.cs
@@ -43,7 +43,7 @@ namespace System.Web {
private void CallCallback(SendOrPostCallback callback, Object state) {
CheckForRequestStateIfRequired();
- // don't take app lock for sync caller to avoid deadlocks in case they poll for result
+ // don't take app lock for [....] caller to avoid deadlocks in case they poll for result
if (_syncCaller) {
CallCallbackPossiblyUnderLock(callback, state);
}
@@ -72,7 +72,7 @@ namespace System.Web {
}
}
- // this property no-ops using the legacy sync context
+ // this property no-ops using the legacy [....] context
internal override bool AllowAsyncDuringSyncStages {
get;
set;
@@ -90,11 +90,11 @@ namespace System.Web {
_error = null;
}
- // Dev11
-
-
-
-
+ // Dev11 Bug 70908: Race condition involving SynchronizationContext allows ASP.NET requests to be abandoned in the pipeline
+ //
+ // When the last completion occurs, the _pendingCount is decremented and then the _lastCompletionCallbackLock is acquired to get
+ // the _lastCompletionCallback. If the _lastCompletionCallback is non-null, then the last completion will invoke the callback;
+ // otherwise, the caller of PendingCompletion will handle the completion.
internal override bool PendingCompletion(WaitCallback callback) {
Debug.Assert(_lastCompletionCallback == null); // only one at a time
bool pending = false;