File tree Expand file tree Collapse file tree 2 files changed +9
-5
lines changed
Foundation/URLSession/http Expand file tree Collapse file tree 2 files changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -56,7 +56,7 @@ internal final class _EasyHandle {
56
56
fileprivate var headerList : _CurlStringList ?
57
57
fileprivate var pauseState : _PauseState = [ ]
58
58
internal var timeoutTimer : _TimeoutSource !
59
- private static var errorBuffer = [ UInt8] ( repeating: 0 , count: Int ( CFURLSessionEasyErrorSize) )
59
+ internal lazy var errorBuffer = [ UInt8] ( repeating: 0 , count: Int ( CFURLSessionEasyErrorSize) )
60
60
#if os(Android)
61
61
static fileprivate var _CAInfoFile : UnsafeMutablePointer < Int8 > ?
62
62
#endif
@@ -147,7 +147,7 @@ extension _EasyHandle {
147
147
/// Set error buffer for error messages
148
148
/// - SeeAlso: https://curl.haxx.se/libcurl/c/CURLOPT_ERRORBUFFER.html
149
149
func set( errorBuffer buffer: UnsafeMutableBufferPointer < UInt8 > ? ) {
150
- let buffer = buffer ?? _EasyHandle . errorBuffer. withUnsafeMutableBufferPointer { $0 }
150
+ let buffer = buffer ?? errorBuffer. withUnsafeMutableBufferPointer { $0 }
151
151
try ! CFURLSession_easy_setopt_ptr ( rawHandle, CFURLSessionOptionERRORBUFFER, buffer. baseAddress) . asError ( )
152
152
}
153
153
/// Request failure on HTTP response >= 400
Original file line number Diff line number Diff line change @@ -214,9 +214,13 @@ fileprivate extension URLSession._MultiHandle {
214
214
}
215
215
let easyHandle = easyHandles [ idx]
216
216
// Find the NSURLError code
217
- let error = easyHandle. urlErrorCode ( for: easyCode) . map {
218
- NSError ( domain: NSURLErrorDomain, code: $0, userInfo: [
219
- NSLocalizedDescriptionKey: CFURLSessionCreateErrorDescription ( easyCode. value) . _swiftObject
217
+ var error : NSError ?
218
+ if let errorCode = easyHandle. urlErrorCode ( for: easyCode) {
219
+ let errorDescription = easyHandle. errorBuffer [ 0 ] != 0 ?
220
+ String ( cString: easyHandle. errorBuffer) :
221
+ CFURLSessionCreateErrorDescription ( easyCode. value) . _swiftObject
222
+ error = NSError ( domain: NSURLErrorDomain, code: errorCode, userInfo: [
223
+ NSLocalizedDescriptionKey: errorDescription
220
224
] )
221
225
}
222
226
completedTransfer ( forEasyHandle: easyHandle, error: error)
You can’t perform that action at this time.
0 commit comments