浏览代码

[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 {