def process_body
if @bytes_remaining.nil?
on_body_data @data.read
return false
end
if @bytes_remaining.zero?
@state = :finished
on_request_complete
return false
end
if @data.size < @bytes_remaining
@bytes_remaining -= @data.size
on_body_data @data.read
return false
end
on_body_data @data.read(@bytes_remaining)
@bytes_remaining = 0
if @response_header.keep_alive?
@data.clear
@state = :finished
on_request_complete
else
if @data.empty?
@state = :finished
on_request_complete
else
@state = :invalid
on_error "garbage at end of body"
end
end
false
end