From 1fb697ff0dccc926fed4c6996a0c75bc7f39134b Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Sun, 6 Dec 2015 13:29:17 +0200 Subject: [PATCH] Add a workaround for yesodweb/wai#478 --- yesod-bin/ChangeLog.md | 4 ++++ yesod-bin/Devel.hs | 16 ++++++++++++++-- yesod-bin/yesod-bin.cabal | 4 ++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/yesod-bin/ChangeLog.md b/yesod-bin/ChangeLog.md index a3516113..cf47e945 100644 --- a/yesod-bin/ChangeLog.md +++ b/yesod-bin/ChangeLog.md @@ -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) diff --git a/yesod-bin/Devel.hs b/yesod-bin/Devel.hs index 90641270..6a25f240 100644 --- a/yesod-bin/Devel.hs +++ b/yesod-bin/Devel.hs @@ -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 diff --git a/yesod-bin/yesod-bin.cabal b/yesod-bin/yesod-bin.cabal index e79ff188..9d5a6e98 100644 --- a/yesod-bin/yesod-bin.cabal +++ b/yesod-bin/yesod-bin.cabal @@ -1,5 +1,5 @@ name: yesod-bin -version: 1.4.16 +version: 1.4.16.1 license: MIT license-file: LICENSE author: Michael Snoyman @@ -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