    # File lib/mongrel/http_request.rb, line 74
        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 => e
            STDERR.puts "#{Time.now}: Error reading HTTP body: #{e.inspect}"
            STDERR.puts e.backtrace.join("\n")
            # any errors means we should delete the file, including if the file is dumped
            @socket.close rescue nil
            @body.delete if @body.class == Tempfile
            @body = nil # signals that there was a problem
          end
        end