# File lib_core/rucy/messenger.rb, line 246
    def write_http_error(socket, request, exception, req_count)
      err_messg = exception.message + "\n"
      response = build_response
      response.status = exception.status
      response.set_header('Content-Type', 'text/plain')
      response.set_header('Content-Length', err_messg.length.to_s)
      exception.each_header do |name, value|
        response.set_header(name, value)
      end
      if (req_count >= @max_requests || request.conn_closed?) then
        response.conn_close
        writer = HTTPThroughWriter.new(socket, request)
      else
        case (response.status)
        when 200...400, 401, 404, 412, 416
          writer = HTTPSpoolWriter.new(socket, request)
        else
          response.conn_close
          writer = HTTPThroughWriter.new(socket, request)
        end
      end
      response.set_writer(writer)
      response.start_body
      if (request.method != 'HEAD') then
        response << err_messg
      end
      writer.close
      @access_log.write_log(request, response, Time.now)

      # Keep-Alive check
      request.conn_closed? || response.conn_closed?
    end