Socket
Socket
Sign inDemoInstall

request

Package Overview
Dependencies
Maintainers
1
Versions
126
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

request - npm Package Compare versions

Comparing version 2.11.4 to 2.12.0

73

aws.js

@@ -13,3 +13,4 @@

var crypto = require('crypto')
, parse = require('url').parse;
, parse = require('url').parse
;

@@ -20,4 +21,4 @@ /**

var keys = [
'acl'
var keys =
[ 'acl'
, 'location'

@@ -36,3 +37,3 @@ , 'logging'

, 'website'
];
]

@@ -49,4 +50,4 @@ /**

exports.authorization = function(options){
return 'AWS ' + options.key + ':' + exports.sign(options);
};
return 'AWS ' + options.key + ':' + exports.sign(options)
}

@@ -62,4 +63,4 @@ /**

exports.hmacSha1 = function(options){
return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64');
};
return crypto.createHmac('sha1', options.secret).update(options.message).digest('base64')
}

@@ -75,5 +76,5 @@ /**

exports.sign = function(options){
options.message = exports.stringToSign(options);
return exports.hmacSha1(options);
};
options.message = exports.stringToSign(options)
return exports.hmacSha1(options)
}

@@ -91,5 +92,5 @@ /**

exports.signQuery = function(options){
options.message = exports.queryStringToSign(options);
return exports.hmacSha1(options);
};
options.message = exports.queryStringToSign(options)
return exports.hmacSha1(options)
}

@@ -114,6 +115,6 @@ /**

exports.stringToSign = function(options){
var headers = options.amazonHeaders || '';
if (headers) headers += '\n';
return [
options.verb
var headers = options.amazonHeaders || ''
if (headers) headers += '\n'
var r =
[ options.verb
, options.md5

@@ -123,4 +124,5 @@ , options.contentType

, headers + options.resource
].join('\n');
};
]
return r.join('\n')
}

@@ -142,5 +144,3 @@ /**

exports.queryStringToSign = function(options){
return 'GET\n\n\n' +
options.date + '\n' +
options.resource;
return 'GET\n\n\n' + options.date + '\n' + options.resource
};

@@ -164,11 +164,13 @@

var buf = []
, fields = Object.keys(headers);
, fields = Object.keys(headers)
;
for (var i = 0, len = fields.length; i < len; ++i) {
var field = fields[i]
, val = headers[field]
, field = field.toLowerCase();
if (0 !== field.indexOf('x-amz')) continue;
buf.push(field + ':' + val);
, field = field.toLowerCase()
;
if (0 !== field.indexOf('x-amz')) continue
buf.push(field + ':' + val)
}
return buf.sort().join('\n');
return buf.sort().join('\n')
};

@@ -190,13 +192,12 @@

, path = url.pathname
, buf = [];
, buf = []
;
Object.keys(url.query).forEach(function(key){
if (!~keys.indexOf(key)) return;
var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key]);
buf.push(key + val);
});
if (!~keys.indexOf(key)) return
var val = '' == url.query[key] ? '' : '=' + encodeURIComponent(url.query[key])
buf.push(key + val)
})
return path + (buf.length
? '?' + buf.sort().join('&')
: '');
return path + (buf.length ? '?' + buf.sort().join('&') : '')
};

@@ -37,3 +37,3 @@ module.exports = ForeverAgent

// default to Connection:keep-alive.
socket.destroy();
socket.destroy()
}

@@ -65,10 +65,10 @@ })

if (this.sockets[name]) {
var index = this.sockets[name].indexOf(s);
var index = this.sockets[name].indexOf(s)
if (index !== -1) {
this.sockets[name].splice(index, 1);
this.sockets[name].splice(index, 1)
}
} else if (this.sockets[name] && this.sockets[name].length === 0) {
// don't leak
delete this.sockets[name];
delete this.requests[name];
delete this.sockets[name]
delete this.requests[name]
}

@@ -89,3 +89,3 @@

// needs to be created to take over in the pool for the one that closed.
this.createSocket(name, host, port).emit('free');
this.createSocket(name, host, port).emit('free')
}

@@ -92,0 +92,0 @@ }

@@ -136,3 +136,4 @@ // Copyright 2010-2012 Mikeal Rogers

if (!self.uri) {
throw new Error("options.uri is a required argument")
// this will throw if unhandled but is handleable when in a redirect
return self.emit('error', new Error("options.uri is a required argument"))
} else {

@@ -177,3 +178,3 @@ if (typeof self.uri == "string") self.uri = url.parse(self.uri)

self.followRedirect = (self.followRedirect !== undefined) ? self.followRedirect : true
self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false;
self.followAllRedirects = (self.followAllRedirects !== undefined) ? self.followAllRedirects : false
if (self.followRedirect || self.followAllRedirects)

@@ -294,2 +295,3 @@ self.redirects = self.redirects || []

if (length) {
if(!self.headers['content-length'] && !self.headers['Content-Length'])
self.headers['content-length'] = length

@@ -307,3 +309,3 @@ } else {

if (!self.httpModule) throw new Error("Invalid protocol")
if (!self.httpModule) return this.emit('error', new Error("Invalid protocol"))

@@ -352,2 +354,4 @@ if (options.ca) self.ca = options.ca

}
if (self._json && !self.headers['content-type'] && !self.headers['Content-Type'])
self.headers['content-type'] = 'application/json'
if (src.method && !self.method) {

@@ -384,5 +388,5 @@ self.method = src.method

if (self.method !== 'GET' && typeof self.method !== 'undefined') {
self.headers['content-length'] = 0;
self.headers['content-length'] = 0
}
self.end();
self.end()
}

@@ -515,3 +519,3 @@ self.ntick = true

if (self.src && self.src.stat && self.src.stat.size) {
if (self.src && self.src.stat && self.src.stat.size && !self.headers['content-length'] && !self.headers['Content-Length']) {
self.headers['content-length'] = self.src.stat.size

@@ -522,3 +526,2 @@ }

}
self.req = self.httpModule.request(self, function (response) {

@@ -587,3 +590,3 @@ if (response.connection.listeners('error').indexOf(self._parserErrorHandler) === -1) {

if (self.followAllRedirects) self.method = 'GET'
// self.method = 'GET'; // Force all redirects to use GET || commented out fixes #215
// self.method = 'GET' // Force all redirects to use GET || commented out fixes #215
delete self.src

@@ -594,4 +597,7 @@ delete self.req

delete self.body
delete self._form
if (self.headers) {
delete self.headers.host
delete self.headers['content-type']
delete self.headers['content-length']
}

@@ -704,3 +710,3 @@ if (log) log('Redirect to %uri', self)

Request.prototype.abort = function () {
this._aborted = true;
this._aborted = true

@@ -775,5 +781,5 @@ if (this.req) {

if (!self.headers['content-type']) {
self.headers['content-type'] = 'multipart/related; boundary=' + self.boundary;
self.headers['content-type'] = 'multipart/related; boundary=' + self.boundary
} else {
self.headers['content-type'] = self.headers['content-type'].split(';')[0] + '; boundary=' + self.boundary;
self.headers['content-type'] = self.headers['content-type'].split(';')[0] + '; boundary=' + self.boundary
}

@@ -804,8 +810,11 @@

Request.prototype.json = function (val) {
this.setHeader('content-type', 'application/json')
this.setHeader('accept', 'application/json')
this._json = true
if (typeof val === 'boolean') {
if (typeof this.body === 'object') this.body = JSON.stringify(this.body)
if (typeof this.body === 'object') {
this.setHeader('content-type', 'application/json')
this.body = JSON.stringify(this.body)
}
} else {
this.setHeader('content-type', 'application/json')
this.body = JSON.stringify(val)

@@ -815,2 +824,11 @@ }

}
function getHeader(name, headers) {
var result, re, match
Object.keys(headers).forEach(function (key) {
re = new RegExp(name, 'i')
match = key.match(re)
if (match) result = headers[key]
})
return result
}
Request.prototype.aws = function (opts, now) {

@@ -823,13 +841,22 @@ if (!now) {

this.setHeader('date', date.toUTCString())
this.setHeader('authorization', aws.authorization(
var auth =
{ key: opts.key
, secret: opts.secret
, verb: this.method
, verb: this.method.toUpperCase()
, date: date
, resource: aws.canonicalizeResource('/' + opts.bucket + this.path)
, contentType: this.headers['content-type'] || ''
, md5: this.headers['content-md5'] || ''
, contentType: getHeader('content-type', this.headers) || ''
, md5: getHeader('content-md5', this.headers) || ''
, amazonHeaders: aws.canonicalizeHeaders(this.headers)
}
))
if (opts.bucket && this.path) {
auth.resource = '/' + opts.bucket + this.path
} else if (opts.bucket && !this.path) {
auth.resource = '/' + opts.bucket
} else if (!opts.bucket && this.path) {
auth.resource = this.path
} else if (!opts.bucket && !this.path) {
auth.resource = '/'
}
auth.resource = aws.canonicalizeResource(auth.resource)
this.setHeader('authorization', aws.authorization(auth))

@@ -874,3 +901,3 @@ return this

delete oa['oauth_'+i]
delete oa[i]
if (i !== 'x_auth_mode') delete oa[i]
}

@@ -880,3 +907,3 @@ }

'OAuth '+Object.keys(oa).sort().map(function (i) {return i+'="'+oauth.rfc3986(oa[i])+'"'}).join(',')
this.headers.Authorization += ',oauth_signature="'+oauth.rfc3986(signature)+'"'
this.headers.Authorization += ',oauth_signature="' + oauth.rfc3986(signature) + '"'
return this

@@ -893,4 +920,4 @@ }

// disable cookies
cookies = false;
this._disableCookies = true;
cookies = false
this._disableCookies = true
} else if (jar) {

@@ -962,12 +989,12 @@ // fetch cookie from the user defined cookie jar

function initParams(uri, options, callback) {
if ((typeof options === 'function') && !callback) callback = options;
if ((typeof options === 'function') && !callback) callback = options
if (options && typeof options === 'object') {
options.uri = uri;
options.uri = uri
} else if (typeof uri === 'string') {
options = {uri:uri};
options = {uri:uri}
} else {
options = uri;
uri = options.uri;
options = uri
uri = options.uri
}
return { uri: uri, options: options, callback: callback };
return { uri: uri, options: options, callback: callback }
}

@@ -977,12 +1004,12 @@

if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.')
if ((typeof options === 'function') && !callback) callback = options;
if ((typeof options === 'function') && !callback) callback = options
if (options && typeof options === 'object') {
options.uri = uri;
options.uri = uri
} else if (typeof uri === 'string') {
options = {uri:uri};
options = {uri:uri}
} else {
options = uri;
options = uri
}
if (callback) options.callback = callback;
if (callback) options.callback = callback
var r = new Request(options)

@@ -994,3 +1021,3 @@ return r

request.initParams = initParams;
request.initParams = initParams

@@ -1000,3 +1027,3 @@ request.defaults = function (options, requester) {

var d = function (uri, opts, callback) {
var params = initParams(uri, opts, callback);
var params = initParams(uri, opts, callback)
for (var i in options) {

@@ -1007,10 +1034,10 @@ if (params.options[i] === undefined) params.options[i] = options[i]

if(method === request) {
method = requester;
method = requester
} else {
params.options._requester = requester;
params.options._requester = requester
}
}
return method(params.options, params.callback);
return method(params.options, params.callback)
}
return d;
return d
}

@@ -1024,3 +1051,3 @@ var de = def(request)

de.cookie = def(request.cookie)
de.jar = def(request.jar)
de.jar = request.jar
return de

@@ -1043,8 +1070,8 @@ }

request.post = function (uri, options, callback) {
var params = initParams(uri, options, callback);
params.options.method = 'POST';
var params = initParams(uri, options, callback)
params.options.method = 'POST'
return request(params.uri || null, params.options, params.callback)
}
request.put = function (uri, options, callback) {
var params = initParams(uri, options, callback);
var params = initParams(uri, options, callback)
params.options.method = 'PUT'

@@ -1054,3 +1081,3 @@ return request(params.uri || null, params.options, params.callback)

request.head = function (uri, options, callback) {
var params = initParams(uri, options, callback);
var params = initParams(uri, options, callback)
params.options.method = 'HEAD'

@@ -1066,6 +1093,6 @@ if (params.options.body ||

request.del = function (uri, options, callback) {
var params = initParams(uri, options, callback);
var params = initParams(uri, options, callback)
params.options.method = 'DELETE'
if(typeof params.options._requester === 'function') {
request = params.options._requester;
request = params.options._requester
}

@@ -1072,0 +1099,0 @@ return request(params.uri || null, params.options, params.callback)

@@ -19,13 +19,22 @@ var crypto = require('crypto')

function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret, body) {
// adapted from https://dev.twitter.com/docs/auth/oauth
var base =
(httpMethod || 'GET') + "&" +
encodeURIComponent( base_uri ) + "&" +
Object.keys(params).sort().map(function (i) {
// big WTF here with the escape + encoding but it's what twitter wants
return escape(rfc3986(i)) + "%3D" + escape(rfc3986(params[i]))
}).join("%26")
var key = encodeURIComponent(consumer_secret) + '&'
if (token_secret) key += encodeURIComponent(token_secret)
function hmacsign (httpMethod, base_uri, params, consumer_secret, token_secret) {
// adapted from https://dev.twitter.com/docs/auth/oauth and
// https://dev.twitter.com/docs/auth/creating-signature
var querystring = Object.keys(params).sort().map(function(key){
// big WTF here with the escape + encoding but it's what twitter wants
return escape(rfc3986(key)) + "%3D" + escape(rfc3986(params[key]))
}).join('%26')
var base = [
httpMethod ? httpMethod.toUpperCase() : 'GET',
rfc3986(base_uri),
querystring
].join('&')
var key = [
consumer_secret,
token_secret || ''
].map(rfc3986).join('&')
return sha1(key, base)

@@ -35,2 +44,2 @@ }

exports.hmacsign = hmacsign
exports.rfc3986 = rfc3986
exports.rfc3986 = rfc3986
{ "name" : "request"
, "description" : "Simplified HTTP request client."
, "tags" : ["http", "simple", "util", "utility"]
, "version" : "2.11.4"
, "version" : "2.12.0"
, "author" : "Mikeal Rogers <mikeal.rogers@gmail.com>"

@@ -6,0 +6,0 @@ , "repository" :

@@ -189,2 +189,3 @@ # Request -- Simplified HTTP request method

* `jar` - Set to `false` if you don't want cookies to be remembered for future use or define your custom cookie jar (see examples section)
* `aws` - object containing aws signing information, should have the properties `key` and `secret` as well as `bucket` unless you're specifying your bucket as part of the path, or you are making a request that doesn't use a bucket (i.e. GET Services)

@@ -191,0 +192,0 @@

@@ -49,3 +49,3 @@ var fs = require('fs')

}
exports.createPostValidator = function (text) {
exports.createPostValidator = function (text, reqContentType) {
var l = function (req, resp) {

@@ -61,2 +61,6 @@ var r = '';

assert.equal(r, text)
if (reqContentType) {
assert.ok(req.headers['content-type'])
assert.ok(~req.headers['content-type'].indexOf(reqContentType))
}
resp.writeHead(200, {'content-type':'text/plain'})

@@ -63,0 +67,0 @@ resp.write('OK')

@@ -26,3 +26,3 @@ var server = require('./server')

assert.equal(req.headers.foo, 'bar');
assert.equal(req.headers['content-type'], 'application/json');
assert.equal(req.headers['content-type'], null);
assert.equal(req.method, 'POST')

@@ -40,2 +40,17 @@ resp.writeHead(200, {'Content-Type': 'application/json'});

s.on('/post-body', function (req, resp) {
assert.equal(req.headers.foo, 'bar');
assert.equal(req.headers['content-type'], 'application/json');
assert.equal(req.method, 'POST')
resp.writeHead(200, {'Content-Type': 'application/json'});
resp.end(JSON.stringify({foo:'bar'}));
});
// test post(string, object, function) with body
request.defaults({headers:{foo:"bar"}}).post(s.url + '/post-body', {json: true, body:{bar:"baz"}}, function (e, r, b){
if (e) throw e;
assert.deepEqual('bar', b.foo);
counter += 1;
});
s.on('/del', function (req, resp) {

@@ -42,0 +57,0 @@ assert.equal(req.headers.foo, 'bar');

@@ -61,3 +61,17 @@ var server = require('./server')

// Test pipeing to a request object with a json body
s.once('/push-json', server.createPostValidator("{\"foo\":\"bar\"}", "application/json"));
var mybodydata = new stream.Stream();
mybodydata.readable = true
counter++
var r2 = request.put({url:'http://localhost:3453/push-json',json:true}, function () {
check();
})
mybodydata.pipe(r2)
mybodydata.emit('data', JSON.stringify({foo:"bar"}));
mybodydata.emit('end');
// Test pipeing from a request object.

@@ -64,0 +78,0 @@ s.once('/pull', server.createGetResponse("mypulldata"));

@@ -1,42 +0,42 @@

'use strict';
'use strict'
var net = require('net');
var tls = require('tls');
var http = require('http');
var https = require('https');
var events = require('events');
var assert = require('assert');
var util = require('util');
var net = require('net')
, tls = require('tls')
, http = require('http')
, https = require('https')
, events = require('events')
, assert = require('assert')
, util = require('util')
;
exports.httpOverHttp = httpOverHttp
exports.httpsOverHttp = httpsOverHttp
exports.httpOverHttps = httpOverHttps
exports.httpsOverHttps = httpsOverHttps
exports.httpOverHttp = httpOverHttp;
exports.httpsOverHttp = httpsOverHttp;
exports.httpOverHttps = httpOverHttps;
exports.httpsOverHttps = httpsOverHttps;
function httpOverHttp(options) {
var agent = new TunnelingAgent(options);
agent.request = http.request;
return agent;
var agent = new TunnelingAgent(options)
agent.request = http.request
return agent
}
function httpsOverHttp(options) {
var agent = new TunnelingAgent(options);
agent.request = http.request;
agent.createSocket = createSecureSocket;
return agent;
var agent = new TunnelingAgent(options)
agent.request = http.request
agent.createSocket = createSecureSocket
return agent
}
function httpOverHttps(options) {
var agent = new TunnelingAgent(options);
agent.request = https.request;
return agent;
var agent = new TunnelingAgent(options)
agent.request = https.request
return agent
}
function httpsOverHttps(options) {
var agent = new TunnelingAgent(options);
agent.request = https.request;
agent.createSocket = createSecureSocket;
return agent;
var agent = new TunnelingAgent(options)
agent.request = https.request
agent.createSocket = createSecureSocket
return agent
}

@@ -46,33 +46,33 @@

function TunnelingAgent(options) {
var self = this;
self.options = options || {};
self.proxyOptions = self.options.proxy || {};
self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
self.requests = [];
self.sockets = [];
var self = this
self.options = options || {}
self.proxyOptions = self.options.proxy || {}
self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets
self.requests = []
self.sockets = []
self.on('free', function onFree(socket, host, port) {
for (var i = 0, len = self.requests.length; i < len; ++i) {
var pending = self.requests[i];
var pending = self.requests[i]
if (pending.host === host && pending.port === port) {
// Detect the request to connect same origin server,
// reuse the connection.
self.requests.splice(i, 1);
pending.request.onSocket(socket);
return;
self.requests.splice(i, 1)
pending.request.onSocket(socket)
return
}
}
socket.destroy();
self.removeSocket(socket);
});
socket.destroy()
self.removeSocket(socket)
})
}
util.inherits(TunnelingAgent, events.EventEmitter);
util.inherits(TunnelingAgent, events.EventEmitter)
TunnelingAgent.prototype.addRequest = function addRequest(req, host, port) {
var self = this;
var self = this
if (self.sockets.length >= this.maxSockets) {
// We are over limit so we'll add it to the queue.
self.requests.push({host: host, port: port, request: req});
return;
self.requests.push({host: host, port: port, request: req})
return
}

@@ -82,48 +82,49 @@

self.createSocket({host: host, port: port, request: req}, function(socket) {
socket.on('free', onFree);
socket.on('close', onCloseOrRemove);
socket.on('agentRemove', onCloseOrRemove);
req.onSocket(socket);
socket.on('free', onFree)
socket.on('close', onCloseOrRemove)
socket.on('agentRemove', onCloseOrRemove)
req.onSocket(socket)
function onFree() {
self.emit('free', socket, host, port);
self.emit('free', socket, host, port)
}
function onCloseOrRemove(err) {
self.removeSocket();
socket.removeListener('free', onFree);
socket.removeListener('close', onCloseOrRemove);
socket.removeListener('agentRemove', onCloseOrRemove);
self.removeSocket()
socket.removeListener('free', onFree)
socket.removeListener('close', onCloseOrRemove)
socket.removeListener('agentRemove', onCloseOrRemove)
}
});
};
})
}
TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
var self = this;
var placeholder = {};
self.sockets.push(placeholder);
var self = this
var placeholder = {}
self.sockets.push(placeholder)
var connectOptions = mergeOptions({}, self.proxyOptions, {
method: 'CONNECT',
path: options.host + ':' + options.port,
agent: false
});
var connectOptions = mergeOptions({}, self.proxyOptions,
{ method: 'CONNECT'
, path: options.host + ':' + options.port
, agent: false
}
)
if (connectOptions.proxyAuth) {
connectOptions.headers = connectOptions.headers || {};
connectOptions.headers = connectOptions.headers || {}
connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
new Buffer(connectOptions.proxyAuth).toString('base64');
new Buffer(connectOptions.proxyAuth).toString('base64')
}
debug('making CONNECT request');
var connectReq = self.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false; // for v0.6
connectReq.once('response', onResponse); // for v0.6
connectReq.once('upgrade', onUpgrade); // for v0.6
connectReq.once('connect', onConnect); // for v0.7 or later
connectReq.once('error', onError);
connectReq.end();
debug('making CONNECT request')
var connectReq = self.request(connectOptions)
connectReq.useChunkedEncodingByDefault = false // for v0.6
connectReq.once('response', onResponse) // for v0.6
connectReq.once('upgrade', onUpgrade) // for v0.6
connectReq.once('connect', onConnect) // for v0.7 or later
connectReq.once('error', onError)
connectReq.end()
function onResponse(res) {
// Very hacky. This is necessary to avoid http-parser leaks.
res.upgrade = true;
res.upgrade = true
}

@@ -134,23 +135,21 @@

process.nextTick(function() {
onConnect(res, socket, head);
});
onConnect(res, socket, head)
})
}
function onConnect(res, socket, head) {
connectReq.removeAllListeners();
socket.removeAllListeners();
connectReq.removeAllListeners()
socket.removeAllListeners()
if (res.statusCode === 200) {
assert.equal(head.length, 0);
debug('tunneling connection has established');
self.sockets[self.sockets.indexOf(placeholder)] = socket;
cb(socket);
assert.equal(head.length, 0)
debug('tunneling connection has established')
self.sockets[self.sockets.indexOf(placeholder)] = socket
cb(socket)
} else {
debug('tunneling socket could not be established, statusCode=%d',
res.statusCode);
var error = new Error('tunneling socket could not be established, ' +
'sutatusCode=' + res.statusCode);
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
debug('tunneling socket could not be established, statusCode=%d', res.statusCode)
var error = new Error('tunneling socket could not be established, ' + 'statusCode=' + res.statusCode)
error.code = 'ECONNRESET'
options.request.emit('error', error)
self.removeSocket(placeholder)
}

@@ -160,22 +159,19 @@ }

function onError(cause) {
connectReq.removeAllListeners();
connectReq.removeAllListeners()
debug('tunneling socket could not be established, cause=%s\n',
cause.message, cause.stack);
var error = new Error('tunneling socket could not be established, ' +
'cause=' + cause.message);
error.code = 'ECONNRESET';
options.request.emit('error', error);
self.removeSocket(placeholder);
debug('tunneling socket could not be established, cause=%s\n', cause.message, cause.stack)
var error = new Error('tunneling socket could not be established, ' + 'cause=' + cause.message)
error.code = 'ECONNRESET'
options.request.emit('error', error)
self.removeSocket(placeholder)
}
};
}
TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
var pos = this.sockets.indexOf(socket)
if (pos === -1) {
return;
}
this.sockets.splice(pos, 1);
if (pos === -1) return
this.sockets.splice(pos, 1)
var pending = this.requests.shift();
var pending = this.requests.shift()
if (pending) {

@@ -185,17 +181,18 @@ // If we have pending requests and a socket gets closed a new one

this.createSocket(pending, function(socket) {
pending.request.onSocket(socket);
});
pending.request.onSocket(socket)
})
}
};
}
function createSecureSocket(options, cb) {
var self = this;
var self = this
TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
// 0 is dummy port for v0.6
var secureSocket = tls.connect(0, mergeOptions({}, self.options, {
servername: options.host,
socket: socket
}));
cb(secureSocket);
});
var secureSocket = tls.connect(0, mergeOptions({}, self.options,
{ servername: options.host
, socket: socket
}
))
cb(secureSocket)
})
}

@@ -206,9 +203,9 @@

for (var i = 1, len = arguments.length; i < len; ++i) {
var overrides = arguments[i];
var overrides = arguments[i]
if (typeof overrides === 'object') {
var keys = Object.keys(overrides);
var keys = Object.keys(overrides)
for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
var k = keys[j];
var k = keys[j]
if (overrides[k] !== undefined) {
target[k] = overrides[k];
target[k] = overrides[k]
}

@@ -218,20 +215,20 @@ }

}
return target;
return target
}
var debug;
var debug
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug = function() {
var args = Array.prototype.slice.call(arguments);
var args = Array.prototype.slice.call(arguments)
if (typeof args[0] === 'string') {
args[0] = 'TUNNEL: ' + args[0];
args[0] = 'TUNNEL: ' + args[0]
} else {
args.unshift('TUNNEL:');
args.unshift('TUNNEL:')
}
console.error.apply(console, args);
console.error.apply(console, args)
}
} else {
debug = function() {};
debug = function() {}
}
exports.debug = debug; // for test
exports.debug = debug // for test
module.exports = function () {
var s = [], itoh = '0123456789ABCDEF';
var s = [], itoh = '0123456789ABCDEF'
// Make array of random hex digits. The UUID only has 32 digits in it, but we
// allocate an extra items to make room for the '-'s we'll be inserting.
for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10);
for (var i = 0; i <36; i++) s[i] = Math.floor(Math.random()*0x10)
// Conform to RFC-4122, section 4.4
s[14] = 4; // Set 4 high bits of time_high field to version
s[19] = (s[19] & 0x3) | 0x8; // Specify 2 high bits of clock sequence
s[19] = (s[19] & 0x3) | 0x8 // Specify 2 high bits of clock sequence
// Convert to hex chars
for (var i = 0; i <36; i++) s[i] = itoh[s[i]];
for (var i = 0; i <36; i++) s[i] = itoh[s[i]]
// Insert '-'s
s[8] = s[13] = s[18] = s[23] = '-';
s[8] = s[13] = s[18] = s[23] = '-'
return s.join('');
return s.join('')
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc