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, @logger, request)
else
case (response.status)
when 200...400, 401, 404, 412, 416
writer = HTTPSpoolWriter.new(socket, @logger, request)
else
response.conn_close
writer = HTTPThroughWriter.new(socket, @logger, request)
end
end
response.set_writer(writer)
response.start_body
if (request.method != 'HEAD') then
response << err_messg
end
writer.close
request.conn_closed? || response.conn_closed?
end