    # File lib/rack/file.rb, line 59
        def serving(env)
          if env["REQUEST_METHOD"] == "OPTIONS"
            return [200, {'Allow' => ALLOW_HEADER, CONTENT_LENGTH => '0'}, []]
          end
          last_modified = F.mtime(@path).httpdate
          return [304, {}, []] if env['HTTP_IF_MODIFIED_SINCE'] == last_modified

          headers = { "Last-Modified" => last_modified }
          headers[CONTENT_TYPE] = mime_type if mime_type

          # Set custom headers
          @headers.each { |field, content| headers[field] = content } if @headers

          response = [ 200, headers, env[REQUEST_METHOD] == "HEAD" ? [] : self ]

          size = filesize

          ranges = Rack::Utils.byte_ranges(env, size)
          if ranges.nil? || ranges.length > 1
            # No ranges, or multiple ranges (which we don't support):
            # TODO: Support multiple byte-ranges
            response[0] = 200
            @range = 0..size-1
          elsif ranges.empty?
            # Unsatisfiable. Return error, and file size:
            response = fail(416, "Byte range unsatisfiable")
            response[1]["Content-Range"] = "bytes */#{size}"
            return response
          else
            # Partial content:
            @range = ranges[0]
            response[0] = 206
            response[1]["Content-Range"] = "bytes #{@range.begin}-#{@range.end}/#{size}"
            size = @range.end - @range.begin + 1
          end

          response[2] = [response_body] unless response_body.nil?

          response[1][CONTENT_LENGTH] = size.to_s
          response
        end