Project

General

Profile

Actions

Bug #9385

closed

open-uri always uses proxy set as env var even if proxy flag is set to nil

Added by toch (Christophe Philemotte) over 10 years ago. Updated about 10 years ago.

Status:
Closed
Target version:
ruby -v:
2.0.0p247
[ruby-core:59650]

Description

According to doc http://ruby-doc.org/stdlib-2.1.0/libdoc/open-uri/rdoc/OpenURI.html we can disable the proxy by doing

open("http://www.ruby-lang.org/en/raa.html", :proxy => nil)

and "environment variables for proxy are ignored and connection will be made to a server directly". But it is not. The environment variable is still considered and used (cf attached script and logs).

After digging the code, I think it's because Net::HTTP.new is called without passing p_addr to nil. If I'm not wrong, the attached patch is a possible solution to fix it.


Files

run.sh (109 Bytes) run.sh reproducible script toch (Christophe Philemotte), 01/09/2014 06:49 AM
logs.txt (1.3 KB) logs.txt error output toch (Christophe Philemotte), 01/09/2014 06:49 AM
0001-open-uri-Ignore-ENV-for-proxy-when-proxy-flag-nil.patch (745 Bytes) 0001-open-uri-Ignore-ENV-for-proxy-when-proxy-flag-nil.patch possible solution toch (Christophe Philemotte), 01/09/2014 06:49 AM

Updated by akr (Akira Tanaka) over 10 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r44637.


  • lib/open-uri.rb: Make proxy disabling working again.
    Fixed by Christophe Philemotte. [ruby-core:59650] [Bug #9385]

Updated by nagachika (Tomoyuki Chikanaga) over 10 years ago

  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: DONTNEED, 2.0.0: REQUIRED, 2.1: REQUIRED

Hi,

I've confirmed that this issue is not reproducible 1.9.3p433 with the following testcase.

This test depend on external web site because http_proxy environment variable should not affect for 127.0.0.0/8.

diff --git a/test/open-uri/test_open-uri.rb b/test/open-uri/test_open-uri.rb
index 21dd969..2a10bfd 100644
--- a/test/open-uri/test_open-uri.rb
+++ b/test/open-uri/test_open-uri.rb
@@ -234,6 +234,14 @@ class TestOpenURI < Test::Unit::TestCase
ensure
proxy.shutdown
end

  •  bug9385 = '[ruby-core:59650]'
    
  •  with_env("http_proxy"=>proxy_url) {
    
  •    open("http://www.ruby-lang.org/", :proxy=>nil) {|f|
    
  •      assert_equal("200", f.status[0], bug9385)
    
  •    }
    
  •    assert_equal("", log, bug9385); log.clear
    
  •  }
    
    }
    end

Updated by nagachika (Tomoyuki Chikanaga) about 10 years ago

  • Backport changed from 1.9.3: DONTNEED, 2.0.0: REQUIRED, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: REQUIRED

r44637 was backported to ruby_2_0_0 at r45014.

Updated by naruse (Yui NARUSE) about 10 years ago

  • Backport changed from 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONE, 2.1: DONE

ruby_2_1 r45125 merged revision(s) 44637.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0