Skip to content

Commit c1c3683

Browse files
authored
Merge pull request #1637 from ahti/sr-8017-4.2
2 parents 66723ac + 44778c5 commit c1c3683

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

Foundation/URLSession/URLSessionTask.swift

+18-8
Original file line numberDiff line numberDiff line change
@@ -541,24 +541,30 @@ extension _ProtocolClient : URLProtocolClient {
541541
session.delegateQueue.addOperation {
542542
delegate.urlSession(session, task: task, didCompleteWithError: nil)
543543
task.state = .completed
544-
task.workQueue.async {
544+
session.workQueue.async {
545545
session.taskRegistry.remove(task)
546546
}
547547
}
548548
case .noDelegate:
549549
task.state = .completed
550-
session.taskRegistry.remove(task)
550+
session.workQueue.async {
551+
session.taskRegistry.remove(task)
552+
}
551553
case .dataCompletionHandler(let completion):
552554
session.delegateQueue.addOperation {
553555
completion(`protocol`.properties[URLProtocol._PropertyKey.responseData] as? Data ?? Data(), task.response, nil)
554556
task.state = .completed
555-
session.taskRegistry.remove(task)
557+
session.workQueue.async {
558+
session.taskRegistry.remove(task)
559+
}
556560
}
557561
case .downloadCompletionHandler(let completion):
558562
session.delegateQueue.addOperation {
559563
completion(`protocol`.properties[URLProtocol._PropertyKey.temporaryFileURL] as? URL, task.response, nil)
560564
task.state = .completed
561-
session.taskRegistry.remove(task)
565+
session.workQueue.async {
566+
session.taskRegistry.remove(task)
567+
}
562568
}
563569
}
564570
task._protocol = nil
@@ -599,26 +605,30 @@ extension _ProtocolClient : URLProtocolClient {
599605
session.delegateQueue.addOperation {
600606
delegate.urlSession(session, task: task, didCompleteWithError: error as Error)
601607
task.state = .completed
602-
task.workQueue.async {
608+
session.workQueue.async {
603609
session.taskRegistry.remove(task)
604610
}
605611
}
606612
case .noDelegate:
607613
task.state = .completed
608-
session.taskRegistry.remove(task)
614+
session.workQueue.async {
615+
session.taskRegistry.remove(task)
616+
}
609617
case .dataCompletionHandler(let completion):
610618
session.delegateQueue.addOperation {
611619
completion(nil, nil, error)
612620
task.state = .completed
613-
task.workQueue.async {
621+
session.workQueue.async {
614622
session.taskRegistry.remove(task)
615623
}
616624
}
617625
case .downloadCompletionHandler(let completion):
618626
session.delegateQueue.addOperation {
619627
completion(nil, nil, error)
620628
task.state = .completed
621-
session.taskRegistry.remove(task)
629+
session.workQueue.async {
630+
session.taskRegistry.remove(task)
631+
}
622632
}
623633
}
624634
task._protocol = nil

0 commit comments

Comments
 (0)