From 087a8db4d2bf4fb6807693b1da2caadffb33702c Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 24 Nov 2003 11:01:57 +0000 Subject: [PATCH] * lib/open-uri.rb (URI::Generic#find_proxy): use CGI_HTTP_PROXY instead of HTTP_PROXY in the CGI environment. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/open-uri.rb | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5ec41c0d61..ae4d54c484 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Nov 24 19:59:48 2003 Tanaka Akira + + * lib/open-uri.rb (URI::Generic#find_proxy): use CGI_HTTP_PROXY + instead of HTTP_PROXY in the CGI environment. + Mon Nov 24 19:32:55 2003 WATANABE Hirofumi * ext/etc/extconf.rb: check for pw_passwd in struct passwd and diff --git a/lib/open-uri.rb b/lib/open-uri.rb index 42503f15cf..871b7b490e 100644 --- a/lib/open-uri.rb +++ b/lib/open-uri.rb @@ -312,7 +312,7 @@ module OpenURI elsif block_given? yield elsif type && %r{\Atext/} =~ type && - @base_uri && @base_uri.scheme == 'http' + @base_uri && /\Ahttp\z/i =~ @base_uri.scheme "iso-8859-1" # RFC2616 3.7.1 else nil @@ -434,8 +434,16 @@ module URI # The proxy URI is obtained from environment variables such as http_proxy, # ftp_proxy, no_proxy, etc. # If there is no proper proxy, nil is returned. + # + # The enveironment variable CGI_http_proxy and CGI_HTTP_PROXY is used + # instead of http_proxy and HTTP_PROXY in the CGI environment because + # HTTP_PROXY can be set by Proxy: header sent by a CGI client. def find_proxy - name = self.scheme + '_proxy' + name = self.scheme.downcase + '_proxy' + if ENV.include? 'REQUEST_METHOD' # in CGI? + # Use CGI_HTTP_PROXY. cf. libwww-perl. + name = "CGI_#{name}" if /\Ahttp_/i =~ name + end if proxy_uri = ENV[name] || ENV[name.upcase] proxy_uri = URI.parse(proxy_uri) name = 'no_proxy'