function getTunnelSocket(options, callback) { var done; var handleCallback = function(err, socket) { if (!done) { done = true; callback(err, socket); } }; var connReq = config.connect(options._proxyOptions, function(socket) { handleCallback(null, socket); }); connReq.on('error', handleCallback); }
function forwardRequestToNodeServer (server, event, context, resolver) { try { const requestOptions = mapApiGatewayEventToHttpRequest(event, context, getSocketPath(server._socketPathSuffix)) const req = http.request(requestOptions, (response) => forwardResponseToApiGateway(server, response, resolver)) if (event.body) { const body = getEventBody(event) req.write(body) } req.on('error', (error) => forwardConnectionErrorResponseToApiGateway(error, resolver)) .end() } catch (error) { forwardLibraryErrorResponseToApiGateway(error, resolver) return server } }
function handleConnect(options, cb) { options.headers['x-whistle-policy'] = 'tunnel'; config.connect({ host: options.hostname, port: options.port || 443, proxyHost: '127.0.0.1', proxyPort: config.port, headers: options.headers }, function(socket, _, err) { if (!err) { if (TLS_PROTOS.indexOf(options.protocol) !== -1) { socket = tls.connect({ rejectUnauthorized: config.rejectUnauthorized, socket: socket, servername: options.hostname }); } drain(socket); var data = options.body; if (data && data.length) { socket.write(data); options.body = data = null; } } cb && cb(err); }).on('error', cb || util.noop); }
client.on('error', function(err) { res.emit('error', err); });
function connect(host, port, callback) { var done; var execCallback = function(err, socket) { if (done) { return; } done = true; callback(err, socket); }; var req = http.request({ method: 'CONNECT', host: '127.0.0.1', port: config.port, agent: false, headers: { 'user-agent': 'test/whistle', 'proxy-connection': 'keep-alive', 'x-whistle-policy': 'tunnel', host: host + (port ? ':' + port : '') } }); req.on('error', execCallback); req.on('connect', function (res, socket, head) { execCallback(null, socket); }); req.end(); }
var client = httpModule.request(options, function(r) { res = r; res.on('error', callbackHandler); res.on('data', function(data) { body = body ? Buffer.concat([body, data]) : data; addTimeout(); res.on('end', callbackHandler); }); client.on('error', callbackHandler); client.end(toString(options.body)); return client;
}); request.on('response', (res) => { if (this.showProgress) { const len = parseInt(res.headers['content-length'], 10); const bar = new ProgressBar('downloading :bar :etas', len); res.on('data', (chunk) => bar.tick(chunk.length)); res.on('end', () => console.log('\n')); file.on('finish', () => { if (isTar) { tar file.on('error', (err) => { fs.unlink(absolutePath, () => reject(err)); }); request.on('error', (err) => { fs.unlink(absolutePath, () => reject(err)); });
var client = http.request(options, function(res) { if (cb) { res.on('error', cb); var buffer; res.on('data', function(data) { if (buffer !== null) { buffer = buffer ? Buffer.concat([buffer, data]) : data; res.on('end', function() { zlib.unzip(res.headers['content-encoding'], buffer, function(err, body) { var headers = res.headers; client.on('error', cb || util.noop); client.end(options.body); options.body = null;