ruby/rubygems · error · Gem::RemoteFetcher::FetchError

bad response #{response.message} #{response.code}

Error message

bad response #{response.message} #{response.code}

What it means

Error "bad response #{response.message} #{response.code}" thrown in ruby/rubygems.

Source

Thrown at lib/rubygems/compact_index_client/http_fetcher.rb:45

    def fetch(uri, headers, redirects_remaining)
      response = @remote_fetcher.request(uri, Gem::Net::HTTP::Get) do |req|
        headers.each {|name, value| req[name] = value }
      end

      case response
      when Gem::Net::HTTPSuccess, Gem::Net::HTTPNotModified
        response
      when Gem::Net::HTTPMovedPermanently, Gem::Net::HTTPFound, Gem::Net::HTTPSeeOther,
           Gem::Net::HTTPTemporaryRedirect, Gem::Net::HTTPPermanentRedirect
        raise Gem::RemoteFetcher::FetchError.new("too many redirects", uri) if redirects_remaining.zero?

        location = response["Location"]
        raise Gem::RemoteFetcher::FetchError.new("redirecting but no redirect location was given", uri) unless location

        fetch(uri + location, headers, redirects_remaining - 1)
      when Gem::Net::HTTPRangeNotSatisfiable
        raise Gem::RemoteFetcher::FetchError.new("bad response #{response.message} #{response.code}", uri) unless headers.key?("Range")

        # The local cache is longer than the remote file, refetch it whole.
        fetch(uri, headers.except("Range"), redirects_remaining)
      else
        raise Gem::RemoteFetcher::FetchError.new("bad response #{response.message} #{response.code}", uri)
      end
    end
  end
end

View on GitHub (pinned to 86cbb817a3)

When it happens

Trigger: Thrown at lib/rubygems/compact_index_client/http_fetcher.rb:45 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23). Data as JSON: /api/errors/c910affcda0a78e9. Report an issue: GitHub.