From 105a1b7a64afae388d0f85e03d3b0b092ff7c780 Mon Sep 17 00:00:00 2001 From: Justin Matthews Date: Thu, 24 Jan 2013 19:55:01 -0800 Subject: [PATCH] Fix avoid apps from retaining references to the upgrade head and large slab buffers --- lib/http.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/http.js b/lib/http.js index 28601d061c4a..1287a14a3dac 100644 --- a/lib/http.js +++ b/lib/http.js @@ -1484,7 +1484,9 @@ function socketOnData(d, start, end) { parser.finish(); // This is start + byteParsed - var bodyHead = d.slice(start + bytesParsed, end); + //Apps that hang on to bodyHead can lead to large slab buffer retention + var bodyHead = new Buffer(end - start - bytesParsed); + d.copy(bodyHead,0,start + bytesParsed, end); var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade'; if (req.listeners(eventName).length) { @@ -1834,7 +1836,9 @@ function connectionListener(socket) { freeParser(parser, req); // This is start + byteParsed - var bodyHead = d.slice(start + bytesParsed, end); + //Apps that hang on to bodyHead can lead to large slab buffer retention + var bodyHead = new Buffer(end - start - bytesParsed); + d.copy(bodyHead,0,start + bytesParsed, end); var eventName = req.method === 'CONNECT' ? 'connect' : 'upgrade'; if (self.listeners(eventName).length) {