Bug #723: Net::HTTPHeader doesn't check the type of the 'value'
http://redmine.ruby-lang.org/issues/show/723

Author: Dmitry A. Ustalov
Status: Open, Priority: Normal

initialize_http_header() method of the Net::HTTPHeader doesn't check the type of the 'value', and crashes with exception:
---8<---
/usr/lib/ruby/1.8/net/http.rb:1142:in `initialize_http_header':
undefined method `strip' for 1.43:Float (NoMethodError)
        from /usr/lib/ruby/1.8/net/http.rb:1140:in `each'
        from /usr/lib/ruby/1.8/net/http.rb:1140:in `initialize_http_header'
        from /usr/lib/ruby/1.8/net/http.rb:1472:in `initialize'
        from /usr/lib/ruby/1.8/net/http.rb:1588:in `initialize'
        from /usr/lib/ruby/1.8/net/http.rb:845:in `new'
        from /usr/lib/ruby/1.8/net/http.rb:845:in `post'
--->8---

I think, we need to cast any 'value' to String in the initialize_http_header():
---8<---
    def initialize_http_header(initheader)
      @header = {}
      return unless initheader
      initheader.each do |key, value|
        warn "net/http: warning: duplicated HTTP header: #{key}" if key?(key) and $VERBOSE
        @header[key.downcase] = [value.strip]
      end
    end
--->8---
Maybe, we should use 'value.to_s.strip' instead of 'value.strip'?

My system is: Fedora 8 i386, ruby 1.8.6 (p111).

// Added later: This bug is also occured in ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-linux] (Fedora 9 i386).


----------------------------------------
http://redmine.ruby-lang.org