kog icon indicating copy to clipboard operation
kog copied to clipboard

Handle ResponseBody.Writer failure

Open danneu opened this issue 8 years ago • 0 comments

Since a ResponseBody.Writer is piped to the jetty response object after the kog response is returned from the handler, if the writer throws an error, then kog (e.g. the user's custom error handler) does not handle it. Jetty handles it and displays a blank 500 response.

This is the logic right now:

val request = kog.Request.fromServletRequest(jettyServletRequest)
val response = handler(request)
response.body.pipe(jettyServletResponse)

For instance, Pebble (http://www.mitchellbosecke.com/pebble/home) writes a to Writer.

val template: PebbleTemplate = engine.getTemplate(path)
return Response().writer("text/html") { writer -> template.evaluate(writer, data) }

So if there's an error in the template, like {{ doesNotExist() }}, then you'll get a blank Jetty 500 page.

danneu avatar Feb 06 '17 19:02 danneu