Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 12 additions & 10 deletions Sources/Adapters/GCDWebServer/GCDHTTPServer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public final class GCDHTTPServer: HTTPServer, Loggable {
for request: ReadiumGCDWebServerRequest,
completion: @escaping (HTTPServerRequest, HTTPServerResponse, HTTPRequestHandler.OnFailure?) -> Void
) {
let completion = { request, resource, failureHandler in
let dispatchCompletion = { (request: HTTPServerRequest, resource: HTTPServerResponse, failureHandler: HTTPRequestHandler.OnFailure?) in
// Escape the queue to avoid deadlocks if something is using the
// server in the handler.
DispatchQueue.global().async {
Expand Down Expand Up @@ -166,20 +166,22 @@ public final class GCDHTTPServer: HTTPServer, Loggable {

var response = handler.onRequest(request)
response.resource = transform(resource: response.resource, request: request, at: endpoint)
completion(request, response, handler.onFailure)
dispatchCompletion(request, response, handler.onFailure)
return
}

log(.warning, "Resource not found for request \(request)")
completion(
dispatchCompletion(
HTTPServerRequest(url: url, href: nil),
HTTPServerResponse(error: .errorResponse(HTTPResponse(
request: HTTPRequest(url: url),
url: url,
status: .notFound,
headers: [:],
mediaType: nil,
body: nil
HTTPServerResponse(error: .errorResponse(HTTPFetchResponse(
response: HTTPResponse(
request: HTTPRequest(url: url),
url: url,
status: .notFound,
headers: [:],
mediaType: nil
),
body: Data()
))),
nil
)
Expand Down
10 changes: 5 additions & 5 deletions Sources/LCP/License/License.swift
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ extension License: LCPLicense {
// done, in case it changed the License.
return try await httpClient
.fetch(HTTPRequest(url: statusURL, headers: ["Accept": MediaType.lcpStatusDocument.string]))
.map { $0.body ?? Data() }
.map(\.body)
.get()
}

Expand Down Expand Up @@ -251,11 +251,11 @@ extension License: LCPLicense {
let url = try await makeRenewURL(from: preferredEndDate())

return try await httpClient.fetch(HTTPRequest(url: url, method: .put))
.map { $0.body ?? Data() }
.map(\.body)
.mapError { error -> RenewError in
switch error {
case let .errorResponse(response):
switch response.status {
switch response.response.status {
case .badRequest:
return .renewFailed
case .forbidden:
Expand Down Expand Up @@ -299,7 +299,7 @@ extension License: LCPLicense {
.mapError { error -> ReturnError in
switch error {
case let .errorResponse(response):
switch response.status {
switch response.response.status {
case .badRequest:
return .returnFailed
case .forbidden:
Expand All @@ -311,7 +311,7 @@ extension License: LCPLicense {
return .unexpectedServerError(error)
}
}
.map { $0.body ?? Data() }
.map(\.body)
.get()

try await validateStatusDocument(data: data)
Expand Down
4 changes: 2 additions & 2 deletions Sources/LCP/License/LicenseValidation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ extension LicenseValidation {
// Short timeout to avoid blocking the License, since the LSD is optional.
timeoutInterval: 5
))
.map { $0.body ?? Data() }
.map(\.body)
.get()

try await raise(.retrievedStatusData(data))
Expand All @@ -316,7 +316,7 @@ extension LicenseValidation {
let data = try await httpClient
// Short timeout to avoid blocking the License, since it can be updated next time.
.fetch(HTTPRequest(url: url, timeoutInterval: 5))
.map { $0.body ?? Data() }
.map(\.body)
.get()

try await raise(.retrievedLicenseData(data))
Expand Down
4 changes: 3 additions & 1 deletion Sources/LCP/Services/CRLService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,11 @@ final class CRLService {
.mapError { _ in LCPError.crlFetching }
.get()

guard let body = response.body?.base64EncodedString() else {
guard !response.body.isEmpty else {
throw LCPError.crlFetching
}

let body = response.body.base64EncodedString()
return "-----BEGIN X509 CRL-----\(body)-----END X509 CRL-----"
}

Expand Down
Loading