{"record":{"id":"c910affcda0a78e9","repo":"ruby/rubygems","slug":"bad-response-response-message-response-code","errorCode":null,"errorMessage":"bad response #{response.message} #{response.code}","messagePattern":"bad response #(.+?) #(.+?)","errorType":"exception","errorClass":"Gem::RemoteFetcher::FetchError","httpStatus":null,"severity":"error","filePath":"lib/rubygems/compact_index_client/http_fetcher.rb","lineNumber":45,"sourceCode":"\n    def fetch(uri, headers, redirects_remaining)\n      response = @remote_fetcher.request(uri, Gem::Net::HTTP::Get) do |req|\n        headers.each {|name, value| req[name] = value }\n      end\n\n      case response\n      when Gem::Net::HTTPSuccess, Gem::Net::HTTPNotModified\n        response\n      when Gem::Net::HTTPMovedPermanently, Gem::Net::HTTPFound, Gem::Net::HTTPSeeOther,\n           Gem::Net::HTTPTemporaryRedirect, Gem::Net::HTTPPermanentRedirect\n        raise Gem::RemoteFetcher::FetchError.new(\"too many redirects\", uri) if redirects_remaining.zero?\n\n        location = response[\"Location\"]\n        raise Gem::RemoteFetcher::FetchError.new(\"redirecting but no redirect location was given\", uri) unless location\n\n        fetch(uri + location, headers, redirects_remaining - 1)\n      when Gem::Net::HTTPRangeNotSatisfiable\n        raise Gem::RemoteFetcher::FetchError.new(\"bad response #{response.message} #{response.code}\", uri) unless headers.key?(\"Range\")\n\n        # The local cache is longer than the remote file, refetch it whole.\n        fetch(uri, headers.except(\"Range\"), redirects_remaining)\n      else\n        raise Gem::RemoteFetcher::FetchError.new(\"bad response #{response.message} #{response.code}\", uri)\n      end\n    end\n  end\nend\n","sourceCodeStart":27,"sourceCodeEnd":55,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/compact_index_client/http_fetcher.rb#L27-L55","documentation":"Error \"bad response #{response.message} #{response.code}\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/compact_index_client/http_fetcher.rb:45 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"86cbb817a38ce8477b181c17467a703ded3f2be8","analyzedAt":"2026-08-23T06:27:48.159Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}