Skip to content

Commit 3c7431a

Browse files
committed
Change disconnect to abort cts
1 parent 58d8c85 commit 3c7431a

File tree

1 file changed

+14
-4
lines changed
  • src/Microsoft.AspNet.Server.Kestrel/Http

1 file changed

+14
-4
lines changed

src/Microsoft.AspNet.Server.Kestrel/Http/Frame.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public partial class Frame : FrameContext, IFrameControl
4343
private Task _requestProcessingTask;
4444
private volatile bool _requestProcessingStopping; // volatile, see: https://msdn.microsoft.com/en-us/library/x13ttww7.aspx
4545
private volatile bool _requestAborted;
46-
private CancellationTokenSource _disconnectOrAbortedCts = new CancellationTokenSource();
46+
private CancellationTokenSource _abortedCts;
4747

4848
private FrameRequestStream _requestBody;
4949
private FrameResponseStream _responseBody;
@@ -144,6 +144,9 @@ public void Reset()
144144
}
145145

146146
_prepareRequest?.Invoke(this);
147+
148+
_abortedCts?.Dispose();
149+
_abortedCts = null;
147150
}
148151

149152
public void ResetResponseHeaders()
@@ -196,12 +199,17 @@ public void Abort()
196199
ConnectionControl.End(ProduceEndType.SocketDisconnect);
197200
SocketInput.AbortAwaiting();
198201

199-
_disconnectOrAbortedCts.Cancel();
202+
_abortedCts?.Cancel();
200203
}
201204
catch (Exception ex)
202205
{
203206
Log.LogError("Abort", ex);
204207
}
208+
finally
209+
{
210+
_abortedCts?.Dispose();
211+
_abortedCts = null;
212+
}
205213
}
206214

207215
/// <summary>
@@ -245,7 +253,8 @@ public async Task RequestProcessingAsync()
245253
ResponseBody = _responseBody;
246254
DuplexStream = new FrameDuplexStream(RequestBody, ResponseBody);
247255

248-
RequestAborted = _disconnectOrAbortedCts.Token;
256+
_abortedCts = new CancellationTokenSource();
257+
RequestAborted = _abortedCts.Token;
249258

250259
var httpContext = HttpContextFactory.Create(this);
251260
try
@@ -298,7 +307,8 @@ public async Task RequestProcessingAsync()
298307
{
299308
try
300309
{
301-
_disconnectOrAbortedCts.Dispose();
310+
_abortedCts?.Dispose();
311+
_abortedCts = null;
302312

303313
// If _requestAborted is set, the connection has already been closed.
304314
if (!_requestAborted)

0 commit comments

Comments
 (0)