diff --git a/lib/server.js b/lib/server.js index a5098d073..aa4eab059 100644 --- a/lib/server.js +++ b/lib/server.js @@ -147,8 +147,7 @@ Server.prototype._processRequestXml = function (req, res, xml) { if (statusCode) { res.statusCode = statusCode; } - res.write(result); - res.end(); + res.end(result); if (typeof self.log === 'function') { self.log("replied", result); } @@ -157,8 +156,7 @@ Server.prototype._processRequestXml = function (req, res, xml) { if (err.Fault !== undefined) { return self._sendError(err.Fault, function (result, statusCode) { res.statusCode = statusCode || 500; - res.write(result); - res.end(); + res.end(result); if (typeof self.log === 'function') { self.log("error", err); } @@ -166,8 +164,7 @@ Server.prototype._processRequestXml = function (req, res, xml) { } else { error = err.stack ? (self.suppressStack === true ? err.message : err.stack) : err; res.statusCode = 500; - res.write(error); - res.end(); + res.end(error); if (typeof self.log === 'function') { self.log("error", error); } diff --git a/test/server-test.js b/test/server-test.js index 23023260b..a24f7693e 100644 --- a/test/server-test.js +++ b/test/server-test.js @@ -483,6 +483,25 @@ describe('SOAP Server', function() { }); }); + it('should not use chunked encoding and return Content-Length header', function(done) { + soap.createClient(test.baseUrl + '/stockquote?wsdl', function(err, client) { + var clientArgs = { tickerSymbol: 'AAPL'}; + + assert.ifError(err); + + client.on('response', function(body, response, eid) { + var headers = response.headers; + assert.notEqual(headers['content-length'], undefined); + assert.equal(headers['transfer-encoding'], undefined); + }) + + client.GetLastTradePrice(clientArgs, function(err, result, raw, headers) { + assert.ifError(err); + done(); + }); + }); + }); + // NOTE: this is actually a -client- test /* it('should return a valid error if the server stops responding': function(done) {