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
* 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 Network.HTTP.Types (status200, status503)
import Network.Socket (sClose)
import Network.Wai (responseLBS, requestHeaders)
import Network.Wai (responseLBS, requestHeaders,
requestHeaderHost)
import Network.Wai.Parse (parseHttpAccept)
import Network.Wai.Handler.Warp (run, defaultSettings, setPort)
import Network.Wai.Handler.WarpTLS (runTLS, tlsSettingsMemory)
@ -192,7 +193,18 @@ reverseProxy opts iappPort = do
let req' = req
{ requestHeaders
= ("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
httpProxy = run (develPort opts) proxyApp

View File

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