diff --git a/Package.swift b/Package.swift index 64340b1..6422ea6 100644 --- a/Package.swift +++ b/Package.swift @@ -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"]), diff --git a/Sources/GzipMiddleware/GzipMiddleware.swift b/Sources/GzipMiddleware/GzipMiddleware.swift index 1e09fac..e365edf 100644 --- a/Sources/GzipMiddleware/GzipMiddleware.swift +++ b/Sources/GzipMiddleware/GzipMiddleware.swift @@ -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)