Skip to content

Commit 11e325b

Browse files
brandon-leapyearMikolaj
authored andcommitted
Fix HttpClient implementation to not override existing request headers
1 parent fb5f795 commit 11e325b

File tree

1 file changed

+6
-6
lines changed
  • hackage-security-http-client/src/Hackage/Security/Client/Repository/HttpLib

1 file changed

+6
-6
lines changed

hackage-security-http-client/src/Hackage/Security/Client/Repository/HttpLib/HttpClient.hs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ get manager reqHeaders uri callback = wrapCustomEx $ do
6161
-- TODO: setUri fails under certain circumstances; in particular, when
6262
-- the URI contains URL auth. Not sure if this is a concern.
6363
request' <- HttpClient.setUri HttpClient.defaultRequest uri
64-
let request = setRequestHeaders reqHeaders request'
64+
let request = addRequestHeaders reqHeaders request'
6565
checkHttpException $ HttpClient.withResponse request manager $ \response -> do
6666
let br = wrapCustomEx $ HttpClient.responseBody response
6767
callback (getResponseHeaders response) br
@@ -72,7 +72,7 @@ getRange :: Throws SomeRemoteError
7272
-> (HttpStatus -> [HttpResponseHeader] -> BodyReader -> IO a)
7373
-> IO a
7474
getRange manager reqHeaders uri (from, to) callback = wrapCustomEx $ do
75-
request <- (setRange from to . setRequestHeaders reqHeaders)
75+
request <- (setRange from to . addRequestHeaders reqHeaders)
7676
`fmap` HttpClient.setUri HttpClient.defaultRequest uri
7777
checkHttpException $ HttpClient.withResponse request manager $ \response -> do
7878
let br = wrapCustomEx $ HttpClient.responseBody response
@@ -129,11 +129,11 @@ setRange from to req = req {
129129
-- See <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html>
130130
rangeHeader = BS.C8.pack $ "bytes=" ++ show from ++ "-" ++ show (to - 1)
131131

132-
-- | Set request headers
133-
setRequestHeaders :: [HttpRequestHeader]
132+
-- | Add the given request headers
133+
addRequestHeaders :: [HttpRequestHeader]
134134
-> HttpClient.Request -> HttpClient.Request
135-
setRequestHeaders opts req = req {
136-
HttpClient.requestHeaders = trOpt disallowCompressionByDefault opts
135+
addRequestHeaders opts req = req {
136+
HttpClient.requestHeaders = HttpClient.requestHeaders req ++ trOpt disallowCompressionByDefault opts
137137
}
138138
where
139139
trOpt :: [(HttpClient.HeaderName, [ByteString])]

0 commit comments

Comments
 (0)