Looks good to me! -- dims
On Wed, Sep 28, 2011 at 6:39 PM, David Lutterkort <[email protected]> wrote: > On Wed, 2011-09-28 at 15:31 -0400, Davanum Srinivas wrote: >> --- >> server/lib/sinatra/url_for.rb | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/server/lib/sinatra/url_for.rb b/server/lib/sinatra/url_for.rb >> index 19a4fc7..707c64a 100644 >> --- a/server/lib/sinatra/url_for.rb >> +++ b/server/lib/sinatra/url_for.rb >> @@ -67,7 +67,7 @@ module Sinatra >> else >> port = ":#{port}" >> end >> - request_host = HOSTNAME ? HOSTNAME : request.host >> + request_host = (HOSTNAME && HOSTNAME!="0.0.0.0") ? HOSTNAME : >> request.host > > Why don't we always use request.host ? Shouldn't that be the right thing > no matter what, now that we require a Host header ? > > I ran into trouble running DC behind a reverse proxy; generated URL's > were all over the place. My tentative patch for addressing this (which > also uses request.host always) is: > > From 9fd3b40714a35ec5bf091ec01fff87f87304e4d5 Mon Sep 17 00:00:00 2001 > From: David Lutterkort <[email protected]> > Date: Thu, 8 Sep 2011 17:31:01 -0400 > Subject: [PATCH] url_for: make work with proxy > > > Signed-off-by: David Lutterkort <[email protected]> > --- > server/lib/sinatra/url_for.rb | 14 ++++++++++---- > 1 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/server/lib/sinatra/url_for.rb b/server/lib/sinatra/url_for.rb > index 19a4fc7..2891a53 100644 > --- a/server/lib/sinatra/url_for.rb > +++ b/server/lib/sinatra/url_for.rb > @@ -59,15 +59,21 @@ module Sinatra > when :path_only > base = request.script_name > when :full > - scheme = request.env['HTTP_X_FORWARDED_SCHEME'] || request.scheme > - port = request.env['HTTP_X_FORWARDED_PORT'] || request.port > - if ((scheme == 'http' && port.to_s == '80') || > + scheme = request.scheme > + port = request.port > + request_host = request.host > + if request.env['HTTP_X_FORWARDED_FOR'] > + scheme = request.env['HTTP_X_FORWARDED_SCHEME'] || scheme > + port = request.env['HTTP_X_FORWARDED_PORT'] > + request_host = request.env['HTTP_X_FORWARDED_HOST'] > + end > + if (port.nil? || port == "" || > + (scheme == 'http' && port.to_s == '80') || > (scheme == 'https' && port.to_s == '443')) > port = "" > else > port = ":#{port}" > end > - request_host = HOSTNAME ? HOSTNAME : request.host > base = "#{scheme}://#{request_host}#{port}#{request.script_name}" > else > raise TypeError, "Unknown url_for mode #{mode}" > -- > 1.7.6 > > > > > -- Davanum Srinivas :: http://davanum.wordpress.com
