Browse Source

Wait for completion of chunked body

tags/v1.0.3
Matthias Neeracher 8 months ago
parent
commit
1550ec1298
2 changed files with 6 additions and 3 deletions
  1. +1
    -1
      Package.swift
  2. +5
    -2
      Sources/GzipMiddleware/GzipMiddleware.swift

+ 1
- 1
Package.swift View File

@@ -11,7 +11,7 @@ let package = Package(
.package(url: "https://github.com/vapor/vapor.git", from: "3.0.0"),

// 🤐 Unzip archives
.package(url: "https://github.com/microtherion/ZIPFoundation.git", .upToNextMajor(from: "0.9.9-µ2"))
.package(url: "https://github.com/microtherion/ZIPFoundation.git", from: "0.9.9-µ5")
],
targets: [
.target(name: "GzipMiddleware", dependencies: ["Vapor", "ZIPFoundation"]),


+ 5
- 2
Sources/GzipMiddleware/GzipMiddleware.swift View File

@@ -51,14 +51,17 @@ public struct GzipServerMiddleware: Middleware, ServiceType {
return stream.write(.chunk(buffer))
}
})
_ = write.flatMap {
write = write.flatMap {
buffer.clear()
buffer.write(integer: crc32, endianness: .little)
buffer.write(integer: UInt32(data.count), endianness: .little)
return stream.write(.chunk(buffer))
}.flatMap {
return stream.write(.end)
}.transform(to: ())
}
DispatchQueue.global().async {
_ = try? write.wait()
}

let httpResponse = HTTPResponse(status: response.http.status, headers: headers, body: stream)
return request.response(http: httpResponse)


Loading…
Cancel
Save