https://redmine.ruby-lang.org/https://redmine.ruby-lang.org/favicon.ico?17113305112017-10-14T23:08:58ZRuby Issue Tracking SystemRuby master - Bug #14016: URI IPv6 address can't be used to open sockethttps://redmine.ruby-lang.org/issues/14016?journal_id=672422017-10-14T23:08:58Zchucke (Tiago Cardoso)
<ul></ul><p>I got the last one wrong:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="no">TCPSocket</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="s2">"[::1]"</span><span class="p">,</span> <span class="mi">9292</span><span class="p">)</span> <span class="c1">#=> getaddrinfo: nodename nor servname provided, or not known)</span>
</code></pre>
<p>if someone be so kind as to edit/replace the original description, I'd be very thankful.</p> Ruby master - Bug #14016: URI IPv6 address can't be used to open sockethttps://redmine.ruby-lang.org/issues/14016?journal_id=672432017-10-14T23:15:25Zchucke (Tiago Cardoso)
<ul></ul><p>Another notable inconsistency (when compared with the second example above):</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="n">uri</span><span class="p">.</span><span class="nf">host</span> <span class="o">=</span> <span class="s2">"::1"</span> <span class="c1">#=> URI::InvalidComponentError: bad component(expected host component): ::1</span>
</code></pre> Ruby master - Bug #14016: URI IPv6 address can't be used to open sockethttps://redmine.ruby-lang.org/issues/14016?journal_id=672442017-10-14T23:28:38Zchucke (Tiago Cardoso)
<ul></ul><p>And more inconsistencies when trying to patch Net::HTTP's usage:</p>
<pre><code class="ruby syntaxhl" data-language="ruby"><span class="c1"># forcing here "::1" so that I can open the socket</span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">015</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="n">conn</span> <span class="o">=</span> <span class="no">Net</span><span class="o">::</span><span class="no">HTTP</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="s2">"::1"</span><span class="p">,</span> <span class="mi">9292</span><span class="p">)</span>
<span class="o">=></span> <span class="c1">#<Net::HTTP ::1:9292 open=false></span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">016</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="n">conn</span><span class="p">.</span><span class="nf">set_debug_output</span><span class="p">(</span><span class="vg">$stderr</span><span class="p">)</span>
<span class="o">=></span> <span class="c1">#<IO:<STDERR>></span>
<span class="n">irb</span><span class="p">(</span><span class="n">main</span><span class="p">):</span><span class="mo">017</span><span class="p">:</span><span class="mi">0</span><span class="o">></span> <span class="n">conn</span><span class="p">.</span><span class="nf">get</span><span class="p">(</span><span class="s2">"http://[::1]:9292"</span><span class="p">)</span>
<span class="n">opening</span> <span class="n">connection</span> <span class="n">to</span> <span class="o">::</span><span class="mi">1</span><span class="p">:</span><span class="mi">9292</span><span class="o">...</span>
<span class="n">opened</span>
<span class="o"><-</span> <span class="s2">"GET http://[::1]:9292 HTTP/1.1</span><span class="se">\r\n</span><span class="s2">Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3</span><span class="se">\r\n</span><span class="s2">Accept: */*</span><span class="se">\r\n</span><span class="s2">User-Agent: Ruby</span><span class="se">\r\n</span><span class="s2">Connection: close</span><span class="se">\r\n</span><span class="s2">Host: ::1:9292</span><span class="se">\r\n\r\n</span><span class="s2">"</span>
<span class="o">-></span> <span class="s2">"HTTP/1.1 200 OK</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="o">-></span> <span class="s2">"Connection: close</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="o">-></span> <span class="s2">"Content-Length: 19</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="o">-></span> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span>
<span class="n">reading</span> <span class="mi">19</span> <span class="n">bytes</span><span class="o">...</span>
<span class="o">-></span> <span class="s2">"echoing it all out!"</span>
<span class="n">read</span> <span class="mi">19</span> <span class="n">bytes</span>
<span class="no">Conn</span> <span class="n">close</span>
<span class="o">=></span> <span class="c1">#<Net::HTTPOK 200 OK readbody=true></span>
</code></pre>
<p>Notable mentions here are the request status line (host leaked into path) and the Host header (should have been <code>Host: [::1]:9292</code>).</p>
<p>Here's the same request performed with curl:</p>
<pre><code>curl http://[::1]:9292 -v
* Rebuilt URL to: http://[::1]:9292/
* Trying ::1...
* TCP_NODELAY set
* Connected to ::1 (::1) port 9292 (#0)
> GET / HTTP/1.1
> Host: [::1]:9292
> User-Agent: curl/7.50.3
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 19
<
* Curl_http_done: called premature == 0
* Connection #0 to host ::1 left intact
echoing it all out!
</code></pre> Ruby master - Bug #14016: URI IPv6 address can't be used to open sockethttps://redmine.ruby-lang.org/issues/14016?journal_id=672492017-10-15T04:46:20Zshevegen (Robert A. Heiler)shevegen@gmail.com
<ul></ul><blockquote>
<p>if someone be so kind as to edit/replace the original description,<br>
I'd be very thankful.</p>
</blockquote>
<p>I think there may be a few who could modify it (not me); at the<br>
least the title can be changed, but possibly also the body of<br>
the message. For some reason, the original poster can not change<br>
the first message, but can modify later replies. Perhaps it is<br>
to preserve the original suggestion, but ideally I think people<br>
could have a window of modification even for the first comment<br>
in a thread; e. g. something like 1-2 hours, to correct any<br>
typos or so. Not sure how easy this is to change via this bugtracker<br>
though.</p> Ruby master - Bug #14016: URI IPv6 address can't be used to open sockethttps://redmine.ruby-lang.org/issues/14016?journal_id=680362017-11-29T09:35:21Zakr (Akira Tanaka)akr@fsij.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Rejected</i></li></ul><p>Use URI::HTTP.hostname which unwraps the bracket.</p>
<pre><code> u = URI("http://[::1]/bar")
p u.hostname #=> "::1"
p u.host #=> "[::1]"
</code></pre>