Extract host_for_request/1 as it is done in original
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch-httpd/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch-httpd/commit/9b3b8b5a Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch-httpd/tree/9b3b8b5a Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch-httpd/diff/9b3b8b5a Branch: refs/heads/split_out_httpd_stack Commit: 9b3b8b5a0248272958f840ee577375f18a603a3f Parents: 3291f97 Author: ILYA Khlopotov <iil...@ca.ibm.com> Authored: Thu Feb 25 10:55:02 2016 -0800 Committer: ILYA Khlopotov <iil...@ca.ibm.com> Committed: Tue Mar 1 08:35:06 2016 -0800 ---------------------------------------------------------------------- src/couch_httpd.erl | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch-httpd/blob/9b3b8b5a/src/couch_httpd.erl ---------------------------------------------------------------------- diff --git a/src/couch_httpd.erl b/src/couch_httpd.erl index d8786d1..c268f8c 100644 --- a/src/couch_httpd.erl +++ b/src/couch_httpd.erl @@ -390,19 +390,25 @@ validate_ctype(Req, Ctype) -> end end. -absolute_uri(#httpd{mochi_req=MochiReq, absolute_uri = undefined}, Path) -> +host_for_request(#httpd{mochi_req = MochiReq}) -> XHost = config:get("httpd", "x_forwarded_host", "X-Forwarded-Host"), - Host = case MochiReq:get_header_value(XHost) of + case MochiReq:get_header_value(XHost) of undefined -> case MochiReq:get_header_value("Host") of undefined -> - {ok, {Address, Port}} = inet:sockname(MochiReq:get(socket)), + {ok, {Address, Port}} = case MochiReq:get(socket) of + {ssl, SslSocket} -> ssl:sockname(SslSocket); + Socket -> inet:sockname(Socket) + end, inet_parse:ntoa(Address) ++ ":" ++ integer_to_list(Port); Value1 -> Value1 end; Value -> Value - end, + end. + +absolute_uri(#httpd{mochi_req=MochiReq, absolute_uri = undefined} = Req, Path) -> + Host = host_for_request(Req), XSsl = config:get("httpd", "x_forwarded_ssl", "X-Forwarded-Ssl"), Scheme = case MochiReq:get_header_value(XSsl) of "on" -> "https";