diff --git a/ChangeLog b/ChangeLog index 285507bb6d..669bcc9600 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Thu Jun 30 14:48:23 2005 GOTOU Yuuzou + + * lib/net/http.rb (Net::HTTP#connect, Net::HTTP#request): should + not send proxy username and password to origin servers. + [ruby-dev:25673] + + * lib/net/http.rb (Net::HTTP::ProxyDelta#edit_path): should not + send HTTPS scheme URL to origine servers. [ruby-dev:25689] + Wed Jun 29 00:03:20 2005 Kazuhiro NISHIYAMA * regparse.c (fetch_token): avoid warning of unused goto tag. diff --git a/lib/net/http.rb b/lib/net/http.rb index 5f40a47602..aa5d5de136 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -521,6 +521,12 @@ module Net # :nodoc: if proxy? @socket.writeline sprintf('CONNECT %s:%s HTTP/%s', @address, @port, HTTPVersion) + @socket.writeline "Host: #{@address}:#{@port}" + if proxy_user + credential = ["#{proxy_user}:#{proxy_pass}"].pack('m') + credential.delete!("\r\n") + @socket.writeline "Proxy-Authorization: Basic #{credential}" + end @socket.writeline '' HTTPResponse.read_new(@socket).value end @@ -660,11 +666,7 @@ module Net # :nodoc: end def edit_path(path) - if use_ssl? - "https://#{addr_port()}#{path}" - else - "http://#{addr_port()}#{path}" - end + use_ssl? ? path : "http://#{addr_port()}#{path}" end end @@ -983,7 +985,9 @@ module Net # :nodoc: } end if proxy_user() - req.proxy_basic_auth proxy_user(), proxy_pass() + unless use_ssl? + req.proxy_basic_auth proxy_user(), proxy_pass() + end end req.set_body_internal body