diff --git a/lib/https/index.js b/lib/https/index.js index f397eaf10..a37a4df99 100644 --- a/lib/https/index.js +++ b/lib/https/index.js @@ -133,8 +133,8 @@ function resolveWebsocket(socket, wss) { socket.write(rawData); execCallback(null, socket); }; - var reqDelay = util.getMatcherValue(_rules.reqDelay) | 0; - var resDelay = util.getMatcherValue(_rules.resDelay) | 0; + var reqDelay = util.getMatcherValue(_rules.reqDelay) || 0; + var resDelay = util.getMatcherValue(_rules.resDelay) || 0; var delay = reqDelay + resDelay; if (delay > 0) { clearTimeout(timeout); @@ -516,12 +516,7 @@ function resolveWebsocket(socket, wss) { reqSocket.write(socket.getBuffer(headers, options.path)); reqSocket.resume(); delete headers[config.HTTPS_FIELD]; - var resDelay = util.getMatcherValue(_rules.resDelay); - if (resDelay > 0) { - setTimeout(_pipeData, resDelay); - } else { - _pipeData(); - } + _pipeData(); } function setupSocket(cb) { @@ -608,26 +603,28 @@ function resolveWebsocket(socket, wss) { socket.resHeaders = res.headers; var curResHeaders = reqSocket.headers = res.headers; getResRules(socket, res, function() { - reqSocket.reqId = data.id; - var code = curStatus || res.statusCode; - socket.statusCode = res.statusCode = code; - if (code == 101) { - socket.write(res.getHeaders(curResHeaders, curStatus)); - if (res.bodyBuffer.length) { - reqSocket.unshift(res.bodyBuffer); + util.delay(util.getMatcherValue(_rules.resDelay), function() { + reqSocket.reqId = data.id; + var code = curStatus || res.statusCode; + socket.statusCode = res.statusCode = code; + if (code == 101) { + socket.write(res.getHeaders(curResHeaders, curStatus)); + if (res.bodyBuffer.length) { + reqSocket.unshift(res.bodyBuffer); + } + socketMgr.handleUpgrade(socket, reqSocket); + resData.body = ''; + } else { + socket.write(res.getBuffer(curResHeaders, curStatus)); + reqSocket.resume(); + resData.body = res.body; } - socketMgr.handleUpgrade(socket, reqSocket); - resData.body = ''; - } else { - socket.write(res.getBuffer(curResHeaders, curStatus)); - reqSocket.resume(); - resData.body = res.body; - } - resData.headers = curResHeaders; - resData.rawHeaderNames = res.rawHeaderNames; - resData.statusCode = code; - reqEmitter.emit('response', data); - execCallback(null, reqSocket); + resData.headers = curResHeaders; + resData.rawHeaderNames = res.rawHeaderNames; + resData.statusCode = code; + reqEmitter.emit('response', data); + execCallback(null, reqSocket); + }); }); }, true); }