Преглед на файлове

[Issue #1333] MultipartFormData temp directory is now created serially.

Christian Noon преди 9 години
родител
ревизия
b73893d013
променени са 1 файла, в които са добавени 13 реда и са изтрити 1 реда
  1. 13 1
      Source/SessionManager.swift

+ 13 - 1
Source/SessionManager.swift

@@ -589,7 +589,19 @@ open class SessionManager {
                 let fileURL = directoryURL.appendingPathComponent(fileName)
 
                 do {
-                    try fileManager.createDirectory(at: directoryURL, withIntermediateDirectories: true, attributes: nil)
+                    var directoryError: Error?
+
+                    // Create directory inside serial queue to ensure two threads don't do this in parallel
+                    self.queue.sync {
+                        do {
+                            try fileManager.createDirectory(at: directoryURL, withIntermediateDirectories: true, attributes: nil)
+                        } catch {
+                            directoryError = error
+                        }
+                    }
+
+                    if let directoryError = directoryError { throw directoryError }
+
                     try formData.writeEncodedData(to: fileURL)
 
                     DispatchQueue.main.async {