瀏覽代碼

Updated input stream read buffer logic to handle end of buffer case.

Christian Noon 10 年之前
父節點
當前提交
14f74c3ad9
共有 1 個文件被更改,包括 16 次插入12 次删除
  1. 16 12
      Source/MultipartFormData.swift

+ 16 - 12
Source/MultipartFormData.swift

@@ -436,13 +436,15 @@ public class MultipartFormData {
                 break
             }
 
-            if bytesRead < 0 {
+            if bytesRead > 0 {
+                encoded.appendBytes(buffer, length: bytesRead)
+            } else if bytesRead < 0 {
                 let failureReason = "Failed to read from input stream: \(inputStream)"
                 error = errorWithCode(AlamofireInputStreamReadFailed, failureReason: failureReason)
                 break
+            } else {
+                break
             }
-
-            encoded.appendBytes(buffer, length: bytesRead)
         }
 
         inputStream.close()
@@ -503,18 +505,20 @@ public class MultipartFormData {
                 break
             }
 
-            if bytesRead < 0 {
+            if bytesRead > 0 {
+                if buffer.count != bytesRead {
+                    buffer = Array(buffer[0..<bytesRead])
+                }
+
+                if let writeError = writeBuffer(&buffer, toOutputStream: outputStream) {
+                    error = writeError
+                    break
+                }
+            } else if bytesRead < 0 {
                 let failureReason = "Failed to read from input stream: \(inputStream)"
                 error = errorWithCode(AlamofireInputStreamReadFailed, failureReason: failureReason)
                 break
-            }
-
-            if buffer.count != bytesRead {
-                buffer = Array(buffer[0..<bytesRead])
-            }
-
-            if let writeError = writeBuffer(&buffer, toOutputStream: outputStream) {
-                error = writeError
+            } else {
                 break
             }
         }