Issue #13307 has been updated by shyouhei (Shyouhei Urabe).


We looked at this issue in today's developer meeting.

The problem is, an URI created using URI.parse("http://...") is an URI::HTTP instance, not HTTPS.  The class is determined from the URI's scheme.  Given that, why is scheme modifiable? It seems rather troublesome.  We might want to prohibit that.  Martin, does that annoy you?  Do you have use case when changing scheme is useful?

----------------------------------------
Bug #13307: Changing scheme from http to https for the URI does not change the port number
https://bugs.ruby-lang.org/issues/13307#change-63567

* Author: martinosis (Martin Chabot)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
If we change the scheme of an URI, it does not change the port number. The URI object become inconsistent. If we print the full URI it does not return the same port number as when we print the port.

See code bellow:

~~~
[1] pry(main)> require 'uri'
=> true
[2] pry(main)> url = "http:devalphaserver.com/xxx/12"
=> "http:devalphaserver.com/xxx/12"
[3] pry(main)> uri = URI.parse(url)
=> #<URI::HTTP http:devalphaserver.com/xxx/12>
[4] pry(main)> uri.scheme = "https"
=> "https"
[5] pry(main)> uri.port
=> 80
[6] pry(main)> uri.to_s
=> "https:devalphaserver.com/xxx/12" # port 443
~~~








-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>