From 34f6aa72a3d004e1767bfd75e6d40b7782f79959 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Wed, 4 Sep 2013 14:53:54 +0000 Subject: [PATCH] feature(main) add Content-Length --- lib/server/main.js | 47 +++++++++++++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/lib/server/main.js b/lib/server/main.js index be131d42..b5eaf10e 100644 --- a/lib/server/main.js +++ b/lib/server/main.js @@ -208,6 +208,9 @@ if(p.gzip) lRet['content-encoding'] = 'gzip'; + + if (!Util.isUndefined(p.length)) + lRet['Content-Length'] = p.length; } return lRet; @@ -226,24 +229,34 @@ var p = pParams, lGzip = isGZIP(p.request) && p.gzip; - p.response.writeHead(OK, generateHeaders({ - name : p.name, - cache : p.cache, - gzip : lGzip, - query : getQuery(p.request) - }) ); - - stream.createPipe({ - from: p.name, - write: p.response, - zip : lGzip && !p.gziped, - callback: function(pError) { - var lError = pError && pError.toString(); - if (pError) { - p.response.writeHead(FILE_NOT_FOUND, 'OK'); - p.response.end(lError); + fs.stat(p.name, function(error, stat) { + var length; + + if (error) + Util.log(error); + else + length = stat.size; + + p.response.writeHead(OK, generateHeaders({ + name : p.name, + cache : p.cache, + gzip : lGzip, + query : getQuery(p.request), + length : length + }) ); + + stream.createPipe({ + from: p.name, + write: p.response, + zip : lGzip && !p.gziped, + callback: function(pError) { + var lError = pError && pError.toString(); + if (pError) { + p.response.writeHead(FILE_NOT_FOUND, 'OK'); + p.response.end(lError); + } } - } + }); }); }