@@ -449,13 +449,10 @@ extension _HTTPURLProtocol: _EasyHandleDelegate {
449
449
fileprivate func notifyDelegate( aboutReceivedData data: Data ) {
450
450
guard let t = self . task else { fatalError ( " Cannot notify " ) }
451
451
if case . taskDelegate( let delegate) = t. session. behaviour ( for: self . task!) ,
452
- let dataDelegate = delegate as? URLSessionDataDelegate ,
453
- let task = self . task as? URLSessionDataTask {
454
- // Forward to the delegate:
455
- guard let s = self . task? . session as? URLSession else { fatalError ( ) }
456
- s. delegateQueue. addOperation {
457
- dataDelegate. urlSession ( s, dataTask: task, didReceive: data)
458
- }
452
+ let _ = delegate as? URLSessionDataDelegate ,
453
+ let _ = self . task as? URLSessionDataTask {
454
+ // Forward to protocol client:
455
+ self . client? . urlProtocol ( self , didLoad: data)
459
456
} else if case . taskDelegate( let delegate) = t. session. behaviour ( for: self . task!) ,
460
457
let downloadDelegate = delegate as? URLSessionDownloadDelegate ,
461
458
let task = self . task as? URLSessionDownloadTask {
@@ -471,9 +468,7 @@ extension _HTTPURLProtocol: _EasyHandleDelegate {
471
468
}
472
469
if Int ( self . easyHandle. fileLength) == self . totalDownloaded {
473
470
fileHandle. closeFile ( )
474
- s. delegateQueue. addOperation {
475
- downloadDelegate. urlSession ( s, downloadTask: task, didFinishDownloadingTo: self . tempFileURL)
476
- }
471
+ self . properties [ . temporaryFileURL] = self . tempFileURL
477
472
}
478
473
}
479
474
}
@@ -759,14 +754,14 @@ internal extension _HTTPURLProtocol {
759
754
/// Whenever we receive a response (i.e. a complete header) from libcurl,
760
755
/// this method gets called.
761
756
func didReceiveResponse( ) {
762
- guard let dt = task as? URLSessionDataTask else { return }
757
+ guard let _ = task as? URLSessionDataTask else { return }
763
758
guard case . transferInProgress( let ts) = self . internalState else { fatalError ( " Transfer not in progress. " ) }
764
759
guard let response = ts. response else { fatalError ( " Header complete, but not URL response. " ) }
765
760
guard let session = task? . session as? URLSession else { fatalError ( ) }
766
761
switch session. behaviour ( for: self . task!) {
767
762
case . noDelegate:
768
763
break
769
- case . taskDelegate( let delegate as URLSessionDataDelegate ) :
764
+ case . taskDelegate( _ ) :
770
765
//TODO: There's a problem with libcurl / with how we're using it.
771
766
// We're currently unable to pause the transfer / the easy handle:
772
767
// https://curl.haxx.se/mail/lib-2016-03/0222.html
@@ -777,14 +772,8 @@ internal extension _HTTPURLProtocol {
777
772
case 301 , 302 , 303 , 307 :
778
773
break
779
774
default :
780
- session. delegateQueue. addOperation {
781
- delegate. urlSession ( session, dataTask: dt, didReceive: response, completionHandler: { _ in
782
- URLSession . printDebug ( " warning: Ignoring disposition from completion handler. " )
783
- } )
784
- }
775
+ self . client? . urlProtocol ( self , didReceive: response, cacheStoragePolicy: . notAllowed)
785
776
}
786
- case . taskDelegate:
787
- break
788
777
case . dataCompletionHandler:
789
778
break
790
779
case . downloadCompletionHandler:
0 commit comments