options.headers[PLUGIN_HOOK_NAME_HEADER] = PLUGIN_HOOKS[res ? 'RES_STATS' : 'REQ_STATS']; ports.forEach(function(item) { var opts = extend({}, options); opts.headers = extend({}, options.headers); opts.port = item.port; if (item.value) { opts.headers[RULE_VALUE_HEADER] = encodeURIComponent(item.value); addRealUrl(req, opts.headers); var request = http.request(opts, function(response) { response.on('error', util.noop);
options.headers[PLUGIN_HOOK_NAME_HEADER] = hookName; var done, hasError, pipeSock; options.proxyHost = LOCALHOST; options.proxyPort = port; delete options.headers[CUSTOM_PARSER_HEADER]; var handleError = function(err) { if (!hasError && !done) { if (req._websocketExtensions !== null) { if (req._websocketExtensions) { req.headers['sec-websocket-extensions'] = req._websocketExtensions; } else { delete req.headers['sec-websocket-extensions'];
var isResRules = type == 'resRules'; var hookName = isResRules ? 'RES_RULES' : (type === 'tunnelRules' ? 'TUNNEL_RULES' : 'REQ_RULES'); options.headers[PLUGIN_HOOK_NAME_HEADER] = PLUGIN_HOOKS[hookName]; var execCallback = function() { if (--rest === 0) { opts.headers = extend({}, options.headers); opts.port = item.port; if (item.value) { opts.headers[RULE_VALUE_HEADER] = encodeURIComponent(item.value); } else { opts.headers[RULE_VALUE_HEADER] = ''; addRealUrl(req, opts.headers); var cacheKey = plugin.moduleName + '\n' + type; var data = rulesCache.get(cacheKey); values = data.values; raw = data.raw; updateMaxAge(data, res && res.headers[MAX_AGE_HEADER]); } else if (res) { var etag = res.headers[ETAG_HEADER]; var maxAge = res.headers[MAX_AGE_HEADER]; var newData; if (maxAge >= 0) { delete opts.headers[ETAG_HEADER]; if (data) { if (Date.now() - data.now <= data.maxAge) {