diff --git a/lib/server.js b/lib/server.js index a92190a9..8a95543a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -184,7 +184,9 @@ lRet = Util.exec(Route, data); if (!lRet) - lRet = join(data); + lRet = join(pReq, pRes, function(error) { + main.sendError(data, error); + }); if (!lRet) { lName = data.name; @@ -226,27 +228,29 @@ }; } - function join(params) { + function join(request, response, callback) { var names, i, n, name, minName, stream, check, funcs = [], config = main.config, dir = DIR, gzip = zlib.createGzip(), - p = params, - isGzip = main.isGZIP(p.request), - path = params.name, + isGzip = main.isGZIP(request), + + parsedUrl = URL.parse(request.url), + path = parsedUrl.pathname, + isJoin = CloudFunc.isJoinURL(path), readPipe = function() { main.mainSetHeader({ name : names[0], cache : config.cache, gzip : isGzip, - request : p.request, - response : p.response + request : request, + response : response }); if (!isGzip) - stream = p.response; + stream = response; else stream = gzip; @@ -257,15 +261,14 @@ callback : function(error) { var errorStr; - if (error) { - if (!p.response.headersSent) - main.sendError(params, error); + if (error) + if (!response.headersSent) + Util.exec(callback, error); else { Util.log(error); errorStr = error.toString(); stream.end(errorStr); } - } } }); @@ -274,7 +277,7 @@ * readPipe called with stream param */ if (isGzip) - gzip.pipe(p.response); + gzip.pipe(response); }; if (isJoin) {