From 7a11c67b643add7016289faa634088cfebccf9bc Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Thu, 13 Aug 2015 14:42:47 +0000 Subject: [PATCH] make sure preview doesn't crash if instrumentation fails --- plugins/c9.preview/preview.handler.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/c9.preview/preview.handler.js b/plugins/c9.preview/preview.handler.js index c746ff01..d59b24bd 100644 --- a/plugins/c9.preview/preview.handler.js +++ b/plugins/c9.preview/preview.handler.js @@ -6,6 +6,7 @@ define(function(require, exports, module) { "connect.render.ejs", "connect.redirect", "connect.static", + "error.logger", "metrics" ]; main.provides = ["preview.handler"]; @@ -19,6 +20,7 @@ define(function(require, exports, module) { var metrics = imports.metrics; var parseUrl = require("url").parse; var debug = require("debug")("preview"); + var logError = imports["error.logger"].warn; var staticPrefix = imports["connect.static"].getStaticPrefix(); @@ -306,8 +308,16 @@ define(function(require, exports, module) { if (data) buffer += data; - if (shouldInject) - buffer = generateInstrumentedHTML(buffer) || ""; + if (shouldInject) { + try { + buffer = generateInstrumentedHTML(buffer) || ""; + } catch(e) { + // don't intrument if it fails + logError(new Error("HTML instrumentation failed"), { + exception: e + }); + } + } data = new Buffer(buffer); res.writeHead(200, { "content-length": data.length + inject.length,