diff --git a/SignalServiceKit/src/Network/ProxiedContentDownloader.swift b/SignalServiceKit/src/Network/ProxiedContentDownloader.swift index eea007546..a9cee113a 100644 --- a/SignalServiceKit/src/Network/ProxiedContentDownloader.swift +++ b/SignalServiceKit/src/Network/ProxiedContentDownloader.swift @@ -657,6 +657,8 @@ open class ProxiedContentDownloader: NSObject, URLSessionTaskDelegate, URLSessio return } + let userAgent = "Signal iOS (+https://signal.org/download)" + if assetRequest.state == .waiting { // If asset request hasn't yet determined the resource size, // try to do so now, by requesting a small initial segment. @@ -669,6 +671,7 @@ open class ProxiedContentDownloader: NSObject, URLSessionTaskDelegate, URLSessio request.httpShouldUsePipelining = true let rangeHeaderValue = "bytes=\(segmentStart)-\(segmentStart + segmentLength - 1)" request.addValue(rangeHeaderValue, forHTTPHeaderField: "Range") + request.addValue(userAgent, forHTTPHeaderField: "User-Agent") padRequestSize(request: &request) let task = downloadSession.dataTask(with: request, completionHandler: { data, response, error -> Void in self.handleAssetSizeResponse(assetRequest: assetRequest, data: data, response: response, error: error) @@ -689,6 +692,7 @@ open class ProxiedContentDownloader: NSObject, URLSessionTaskDelegate, URLSessio request.httpShouldUsePipelining = true let rangeHeaderValue = "bytes=\(assetSegment.segmentStart)-\(assetSegment.segmentStart + assetSegment.segmentLength - 1)" request.addValue(rangeHeaderValue, forHTTPHeaderField: "Range") + request.addValue(userAgent, forHTTPHeaderField: "User-Agent") padRequestSize(request: &request) let task: URLSessionDataTask = downloadSession.dataTask(with: request) task.assetRequest = assetRequest @@ -740,7 +744,7 @@ open class ProxiedContentDownloader: NSObject, URLSessionTaskDelegate, URLSessio result += percentEncodedQuery.count } if let allHTTPHeaderFields = request.allHTTPHeaderFields { - if allHTTPHeaderFields.count != 1 { + if allHTTPHeaderFields.count != 2 { owsFailDebug("Request has unexpected number of headers.") } for (key, value) in allHTTPHeaderFields {