Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package rubygem-rack-proxy for openSUSE:Factory checked in at 2022-10-12 18:25:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-rack-proxy (Old) and /work/SRC/openSUSE:Factory/.rubygem-rack-proxy.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-rack-proxy" Wed Oct 12 18:25:19 2022 rev:4 rq:1010076 version:0.7.4 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-rack-proxy/rubygem-rack-proxy.changes 2022-02-02 22:45:02.554056056 +0100 +++ /work/SRC/openSUSE:Factory/.rubygem-rack-proxy.new.2275/rubygem-rack-proxy.changes 2022-10-12 18:27:08.226012872 +0200 @@ -1,0 +2,6 @@ +Mon Oct 10 13:15:58 UTC 2022 - Stephan Kulow <co...@suse.com> + +updated to version 0.7.4 + no changelog found + +------------------------------------------------------------------- Old: ---- rack-proxy-0.7.2.gem New: ---- rack-proxy-0.7.4.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-rack-proxy.spec ++++++ --- /var/tmp/diff_new_pack.9v9oqM/_old 2022-10-12 18:27:08.598013690 +0200 +++ /var/tmp/diff_new_pack.9v9oqM/_new 2022-10-12 18:27:08.606013708 +0200 @@ -24,7 +24,7 @@ # Name: rubygem-rack-proxy -Version: 0.7.2 +Version: 0.7.4 Release: 0 %define mod_name rack-proxy %define mod_full_name %{mod_name}-%{version} ++++++ rack-proxy-0.7.2.gem -> rack-proxy-0.7.4.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.github/FUNDING.yml new/.github/FUNDING.yml --- old/.github/FUNDING.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/.github/FUNDING.yml 2022-09-13 17:38:27.000000000 +0200 @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: [ncr] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Gemfile.lock new/Gemfile.lock --- old/Gemfile.lock 2022-01-05 21:36:02.000000000 +0100 +++ new/Gemfile.lock 2022-09-13 17:38:27.000000000 +0200 @@ -1,18 +1,18 @@ PATH remote: . specs: - rack-proxy (0.7.2) + rack-proxy (0.7.4) rack GEM remote: https://rubygems.org/ specs: - power_assert (0.2.6) - rack (2.2.3) - rack-test (0.5.6) - rack (>= 1.0) + power_assert (2.0.1) + rack (2.2.4) + rack-test (1.1.0) + rack (>= 1.0, < 3) rake (13.0.6) - test-unit (3.1.5) + test-unit (3.5.3) power_assert PLATFORMS @@ -25,4 +25,4 @@ test-unit BUNDLED WITH - 1.17.2 + 2.3.21 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2022-01-05 21:36:02.000000000 +0100 +++ new/README.md 2022-09-13 17:38:27.000000000 +0200 @@ -6,7 +6,7 @@ Add the following to your `Gemfile`: ``` -gem 'rack-proxy', '~> 0.7.2' +gem 'rack-proxy', '~> 0.7.4' ``` Or install: @@ -136,7 +136,7 @@ # 1. rails new test_app # 2. cd test_app # 3. install Rack-Proxy in `Gemfile` -# a. `gem 'rack-proxy', '~> 0.7.2'` +# a. `gem 'rack-proxy', '~> 0.7.4'` # 4. install gem: `bundle install` # 5. create `config/initializers/proxy.rb` adding this line `require 'rack_proxy_examples/example_service_proxy'` # 6. run: `SERVICE_URL=http://guides.rubyonrails.org rails server` Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/http_streaming_response.rb new/lib/rack/http_streaming_response.rb --- old/lib/rack/http_streaming_response.rb 2022-01-05 21:36:02.000000000 +0100 +++ new/lib/rack/http_streaming_response.rb 2022-09-13 17:38:27.000000000 +0200 @@ -1,13 +1,16 @@ require "net_http_hacked" +require "stringio" module Rack - # Wraps the hacked net/http in a Rack way. class HttpStreamingResponse - attr_accessor :use_ssl - attr_accessor :verify_mode - attr_accessor :read_timeout - attr_accessor :ssl_version + STATUSES_WITH_NO_ENTITY_BODY = { + 204 => true, + 205 => true, + 304 => true + }.freeze + + attr_accessor :use_ssl, :verify_mode, :read_timeout, :ssl_version def initialize(request, host, port = nil) @request, @host, @port = request, host, port @@ -18,60 +21,62 @@ end def code - response.code.to_i + response.code.to_i.tap do |response_code| + STATUSES_WITH_NO_ENTITY_BODY[response_code] && close_connection + end end # #status is deprecated alias_method :status, :code def headers - h = Utils::HeaderHash.new - - response.to_hash.each do |k, v| - h[k] = v + Utils::HeaderHash.new.tap do |h| + response.to_hash.each { |k, v| h[k] = v } end - - h end # Can be called only once! def each(&block) + return if connection_closed + response.read_body(&block) ensure - session.end_request_hacked - session.finish + close_connection end def to_s - @body ||= begin - lines = [] - - each do |line| - lines << line - end - - lines.join - end + @to_s ||= StringIO.new.tap { |io| each { |line| io << line } }.string end protected # Net::HTTPResponse def response - @response ||= session.begin_request_hacked(@request) + @response ||= session.begin_request_hacked(request) end # Net::HTTP def session - @session ||= begin - http = Net::HTTP.new @host, @port - http.use_ssl = self.use_ssl - http.verify_mode = self.verify_mode - http.read_timeout = self.read_timeout - http.ssl_version = self.ssl_version if self.use_ssl + @session ||= Net::HTTP.new(host, port).tap do |http| + http.use_ssl = use_ssl + http.verify_mode = verify_mode + http.read_timeout = read_timeout + http.ssl_version = ssl_version if use_ssl http.start end end - end + private + + attr_reader :request, :host, :port + + attr_accessor :connection_closed + + def close_connection + return if connection_closed + session.end_request_hacked + session.finish + self.connection_closed = true + end + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack/proxy.rb new/lib/rack/proxy.rb --- old/lib/rack/proxy.rb 2022-01-05 21:36:02.000000000 +0100 +++ new/lib/rack/proxy.rb 2022-09-13 17:38:27.000000000 +0200 @@ -5,7 +5,18 @@ # Subclass and bring your own #rewrite_request and #rewrite_response class Proxy - VERSION = "0.7.2" + VERSION = "0.7.4".freeze + + HOP_BY_HOP_HEADERS = { + 'connection' => true, + 'keep-alive' => true, + 'proxy-authenticate' => true, + 'proxy-authorization' => true, + 'te' => true, + 'trailer' => true, + 'transfer-encoding' => true, + 'upgrade' => true + }.freeze class << self def extract_http_request_headers(env) @@ -19,9 +30,9 @@ hash end - x_forwarded_for = (headers["X-Forwarded-For"].to_s.split(/, +/) << env["REMOTE_ADDR"]).join(", ") + x_forwarded_for = (headers['X-Forwarded-For'].to_s.split(/, +/) << env['REMOTE_ADDR']).join(', ') - headers.merge!("X-Forwarded-For" => x_forwarded_for) + headers.merge!('X-Forwarded-For' => x_forwarded_for) end def normalize_headers(headers) @@ -130,16 +141,16 @@ end end + code = target_response.code headers = self.class.normalize_headers(target_response.respond_to?(:headers) ? target_response.headers : target_response.to_hash) body = target_response.body || [""] body = [body] unless body.respond_to?(:each) # According to https://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-14#section-7.1.3.1Acc # should remove hop-by-hop header fields - headers.reject! { |k| ['connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailer', 'transfer-encoding', 'upgrade'].include? k.downcase } - [target_response.code, headers, body] - end + headers.reject! { |k| HOP_BY_HOP_HEADERS[k.downcase] } + [code, headers, body] + end end - end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/rack_proxy_examples/example_service_proxy.rb new/lib/rack_proxy_examples/example_service_proxy.rb --- old/lib/rack_proxy_examples/example_service_proxy.rb 2022-01-05 21:36:02.000000000 +0100 +++ new/lib/rack_proxy_examples/example_service_proxy.rb 2022-09-13 17:38:27.000000000 +0200 @@ -5,7 +5,7 @@ # 1. rails new test_app # 2. cd test_app # 3. install Rack-Proxy in `Gemfile` -# a. `gem 'rack-proxy', '~> 0.7.2'` +# a. `gem 'rack-proxy', '~> 0.7.4'` # 4. install gem: `bundle install` # 5. create `config/initializers/proxy.rb` adding this line `require 'rack_proxy_examples/example_service_proxy'` # 6. run: `SERVICE_URL=http://guides.rubyonrails.org rails server` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2022-01-05 21:36:02.000000000 +0100 +++ new/metadata 2022-09-13 17:38:27.000000000 +0200 @@ -1,14 +1,14 @@ --- !ruby/object:Gem::Specification name: rack-proxy version: !ruby/object:Gem::Version - version: 0.7.2 + version: 0.7.4 platform: ruby authors: - Jacek Becela autorequire: bindir: bin cert_chain: [] -date: 2022-01-05 00:00:00.000000000 Z +date: 2022-09-13 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: rack @@ -60,6 +60,7 @@ extensions: [] extra_rdoc_files: [] files: +- ".github/FUNDING.yml" - ".gitignore" - ".travis.yml" - Gemfile