Add a workaround for yesodweb/wai#478

This commit is contained in:
Michael Snoyman 2015-12-06 13:29:17 +02:00
parent 288c457cfa
commit 1fb697ff0d
3 changed files with 20 additions and 4 deletions

View File

@ -1,3 +1,7 @@
## 1.4.16.1
* Workaround for [wai#478](https://github.com/yesodweb/wai/issues/478)
## 1.4.16 ## 1.4.16
* Some updates for better reverse proxying [yesod-scaffold#114](https://github.com/yesodweb/yesod-scaffold/issues/114) * Some updates for better reverse proxying [yesod-scaffold#114](https://github.com/yesodweb/yesod-scaffold/issues/114)

View File

@ -77,7 +77,8 @@ import Network.HTTP.ReverseProxy (ProxyDest (ProxyDest),
import qualified Network.HTTP.ReverseProxy as ReverseProxy import qualified Network.HTTP.ReverseProxy as ReverseProxy
import Network.HTTP.Types (status200, status503) import Network.HTTP.Types (status200, status503)
import Network.Socket (sClose) import Network.Socket (sClose)
import Network.Wai (responseLBS, requestHeaders) import Network.Wai (responseLBS, requestHeaders,
requestHeaderHost)
import Network.Wai.Parse (parseHttpAccept) import Network.Wai.Parse (parseHttpAccept)
import Network.Wai.Handler.Warp (run, defaultSettings, setPort) import Network.Wai.Handler.Warp (run, defaultSettings, setPort)
import Network.Wai.Handler.WarpTLS (runTLS, tlsSettingsMemory) import Network.Wai.Handler.WarpTLS (runTLS, tlsSettingsMemory)
@ -192,7 +193,18 @@ reverseProxy opts iappPort = do
let req' = req let req' = req
{ requestHeaders { requestHeaders
= ("X-Forwarded-Proto", "https") = ("X-Forwarded-Proto", "https")
: requestHeaders req -- Workaround for
-- https://github.com/yesodweb/wai/issues/478, where
-- the Host headers aren't set. Without this, generated
-- URLs from guestApproot are incorrect, see:
-- https://github.com/yesodweb/yesod-scaffold/issues/114
: (case lookup "host" (requestHeaders req) of
Nothing ->
case requestHeaderHost req of
Just host -> (("Host", host):)
Nothing -> id
Just _ -> id)
(requestHeaders req)
} }
app req' send app req' send
httpProxy = run (develPort opts) proxyApp httpProxy = run (develPort opts) proxyApp

View File

@ -1,5 +1,5 @@
name: yesod-bin name: yesod-bin
version: 1.4.16 version: 1.4.16.1
license: MIT license: MIT
license-file: LICENSE license-file: LICENSE
author: Michael Snoyman <michael@snoyman.com> author: Michael Snoyman <michael@snoyman.com>
@ -82,7 +82,7 @@ executable yesod
, transformers , transformers
, transformers-compat , transformers-compat
, warp >= 1.3.7.5 , warp >= 1.3.7.5
, wai >= 1.4 , wai >= 2.0
, wai-extra , wai-extra
, data-default-class , data-default-class
, streaming-commons , streaming-commons