# File lib/mongrel.rb, line 247
    def read_body(remain, total)
      begin
        # write the odd sized chunk first
        @params.http_body = read_socket(remain % Const::CHUNK_SIZE)

        remain -= @body.write(@params.http_body)

        update_request_progress(remain, total)

        # then stream out nothing but perfectly sized chunks
        until remain <= 0 or @socket.closed?
          # ASSUME: we are writing to a disk and these writes always write the requested amount
          @params.http_body = read_socket(Const::CHUNK_SIZE)
          remain -= @body.write(@params.http_body)

          update_request_progress(remain, total)
        end
      rescue Object
        STDERR.puts "ERROR reading http body: #$!"
        $!.backtrace.join("\n")
        # any errors means we should delete the file, including if the file is dumped
        @socket.close rescue Object
        @body.delete if @body.class == Tempfile
        @body = nil # signals that there was a problem
      end
    end