From 7dbd22356d5302b4953b97874100d2f21222ccb4 Mon Sep 17 00:00:00 2001 From: Wyatt Preul Date: Tue, 20 Nov 2012 14:14:00 -0600 Subject: [PATCH] Adding gzip error handling --- lib/response/generic.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/response/generic.js b/lib/response/generic.js index 492fc9a97..0000979ec 100755 --- a/lib/response/generic.js +++ b/lib/response/generic.js @@ -4,6 +4,7 @@ var NodeUtil = require('util'); var Zlib = require('zlib'); var Base = require('./base'); var Utils = require('../utils'); +var Err = require('../error'); // Declare internals @@ -37,17 +38,27 @@ internals.Generic.prototype._transmit = function (request, callback) { var processGzip = function() { + if (!self._payload || isHeadMethod) { + return send(); + } + var rawReq = (request && request.raw && request.raw.req) ? request.raw.req : null; var acceptEncoding = rawReq && rawReq.headers ? rawReq.headers['accept-encoding'] : null; var isGzip = acceptEncoding && acceptEncoding.indexOf('gzip') !== -1; - if(!isGzip || isHeadMethod && !self._payload) { + if(!isGzip) { return send(); } Zlib.gzip(new Buffer(self._payload), function(err, result) { - if (result) { + if (err) { + var errorResponse = Err.internal('Unable to gzip payload', err).toResponse(); + + self._code = errorResponse.code; + self._payload = errorResponse.payload; + } + else if (result) { self._payload = result; self.header('Content-Encoding', 'gzip'); self.header('Vary', 'Accept-Encoding');