Socket
Socket
Sign inDemoInstall

tedious

Package Overview
Dependencies
Maintainers
8
Versions
227
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tedious - npm Package Compare versions

Comparing version 11.0.1 to 11.0.2

26

lib/instance-lookup.js

@@ -8,6 +8,8 @@ "use strict";

var _dns = _interopRequireDefault(require("dns"));
var _nodeAbortController = _interopRequireDefault(require("node-abort-controller"));
var _sender = require("./sender");
var _dns = _interopRequireDefault(require("dns"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -23,7 +25,2 @@

class InstanceLookup {
// Wrapper allows for stubbing Sender when unit testing instance-lookup.
createSender(host, port, lookup, request) {
return new _sender.Sender(host, port, lookup, request);
}
instanceLookup(options, callback) {

@@ -77,5 +74,6 @@ var _options$lookup, _options$port;

let timer;
const controller = new _nodeAbortController.default();
const onTimeout = () => {
sender.cancel();
controller.abort();
makeAttempt();

@@ -87,3 +85,3 @@ };

const request = Buffer.from([0x02]);
sender = this.createSender(options.server, port, lookup, request);
sender = new _sender.Sender(options.server, port, lookup, controller.signal, request);
timer = setTimeout(onTimeout, timeout);

@@ -93,4 +91,8 @@ sender.execute((err, response) => {

if ((err === null || err === void 0 ? void 0 : err.name) === 'AbortError') {
return;
}
if (err) {
callback('Failed to lookup instance on ' + server + ' - ' + err.message);
callback(new Error('Failed to lookup instance on ' + server + ' - ' + err.message));
} else {

@@ -103,3 +105,3 @@ const message = response.toString('ascii', MYSTERY_HEADER_LENGTH);

} else {
callback('Port for ' + instanceName + ' not found in ' + options.server);
callback(new Error('Port for ' + instanceName + ' not found in ' + options.server));
}

@@ -109,3 +111,3 @@ }

} else {
callback('Failed to get response from SQL Server Browser on ' + server);
callback(new Error('Failed to get response from SQL Server Browser on ' + server));
}

@@ -112,0 +114,0 @@ };

@@ -20,39 +20,32 @@ "use strict";

class AbortError extends Error {
constructor() {
super('The operation was aborted');
this.code = void 0;
this.code = 'ABORT_ERR';
this.name = 'AbortError';
}
}
class ParallelSendStrategy {
constructor(addresses, port, request) {
constructor(addresses, port, signal, request) {
this.addresses = void 0;
this.port = void 0;
this.request = void 0;
this.socketV4 = void 0;
this.socketV6 = void 0;
this.onMessage = void 0;
this.onError = void 0;
this.signal = void 0;
this.addresses = addresses;
this.port = port;
this.request = request;
this.socketV4 = null;
this.socketV6 = null;
this.onError = null;
this.onMessage = null;
this.signal = signal;
}
clearSockets() {
const clearSocket = (socket, onError, onMessage) => {
socket.removeListener('error', onError);
socket.removeListener('message', onMessage);
socket.close();
};
send(cb) {
const signal = this.signal;
if (this.socketV4) {
clearSocket(this.socketV4, this.onError, this.onMessage);
this.socketV4 = null;
if (signal.aborted) {
return cb(new AbortError());
}
if (this.socketV6) {
clearSocket(this.socketV6, this.onError, this.onMessage);
this.socketV6 = null;
}
}
send(cb) {
const sockets = [];
let errorCount = 0;

@@ -64,3 +57,4 @@

if (errorCount === this.addresses.length) {
this.clearSockets();
signal.removeEventListener('abort', onAbort);
clearSockets();
cb(err);

@@ -71,45 +65,36 @@ }

const onMessage = message => {
this.clearSockets();
signal.removeEventListener('abort', onAbort);
clearSockets();
cb(null, message);
};
const createDgramSocket = (udpType, onError, onMessage) => {
const socket = _dgram.default.createSocket(udpType);
const onAbort = () => {
clearSockets();
cb(new AbortError());
};
socket.on('error', onError);
socket.on('message', onMessage);
return socket;
const clearSockets = () => {
for (const socket of sockets) {
socket.removeListener('error', onError);
socket.removeListener('message', onMessage);
socket.close();
}
};
signal.addEventListener('abort', onAbort, {
once: true
});
for (let j = 0; j < this.addresses.length; j++) {
const udpTypeV4 = 'udp4';
const udpTypeV6 = 'udp6';
const udpType = this.addresses[j].family === 6 ? udpTypeV6 : udpTypeV4;
let socket;
const udpType = this.addresses[j].family === 6 ? 'udp6' : 'udp4';
if (udpType === udpTypeV4) {
if (!this.socketV4) {
this.socketV4 = createDgramSocket(udpTypeV4, onError, onMessage);
}
const socket = _dgram.default.createSocket(udpType);
socket = this.socketV4;
} else {
if (!this.socketV6) {
this.socketV6 = createDgramSocket(udpTypeV6, onError, onMessage);
}
socket = this.socketV6;
}
sockets.push(socket);
socket.on('error', onError);
socket.on('message', onMessage);
socket.send(this.request, 0, this.request.length, this.port, this.addresses[j].address);
}
this.onError = onError;
this.onMessage = onMessage;
}
cancel() {
this.clearSockets();
}
}

@@ -120,8 +105,8 @@

class Sender {
constructor(host, port, lookup, request) {
constructor(host, port, lookup, signal, request) {
this.host = void 0;
this.port = void 0;
this.request = void 0;
this.parallelSendStrategy = void 0;
this.lookup = void 0;
this.signal = void 0;
this.host = host;

@@ -131,3 +116,3 @@ this.port = port;

this.lookup = lookup;
this.parallelSendStrategy = null;
this.signal = signal;
}

@@ -165,23 +150,11 @@

});
} // Wrapper for stubbing creation of Strategy object. Sinon support for constructors
// seems limited.
createParallelSendStrategy(addresses, port, request) {
return new ParallelSendStrategy(addresses, port, request);
}
executeForAddresses(addresses, cb) {
this.parallelSendStrategy = this.createParallelSendStrategy(addresses, this.port, this.request);
this.parallelSendStrategy.send(cb);
const parallelSendStrategy = new ParallelSendStrategy(addresses, this.port, this.signal, this.request);
parallelSendStrategy.send(cb);
}
cancel() {
if (this.parallelSendStrategy) {
this.parallelSendStrategy.cancel();
}
}
}
exports.Sender = Sender;

@@ -30,3 +30,3 @@ {

"license": "MIT",
"version": "11.0.1",
"version": "11.0.2",
"main": "./lib/tedious.js",

@@ -52,2 +52,3 @@ "repository": {

"native-duplexpair": "^1.0.0",
"node-abort-controller": "^1.1.0",
"punycode": "^2.1.0",

@@ -54,0 +55,0 @@ "readable-stream": "^3.6.0",

@@ -27,3 +27,3 @@ # Tedious (node implementation of TDS)

Node.js is a prerequisite for installing tedious. Once you have installed [Node.js](https://nodejs.org/), installing tedious is simple:
Node.js is a prerequisite for installing tedious. Once you have installed [Node.js](https://nodejs.org/), installing tedious is simple:

@@ -45,3 +45,3 @@ npm install tedious

## Name
_Tedious_ is simply derived from a fast, slightly garbled, pronunciation of the letters T, D and S.
_Tedious_ is simply derived from a fast, slightly garbled, pronunciation of the letters T, D and S.

@@ -61,3 +61,3 @@ ## Developer Survey

Copyright (c) 2010-2020 Mike D Pilsbury
Copyright (c) 2010-2021 Mike D Pilsbury

@@ -64,0 +64,0 @@ The MIT License

Sorry, the diff of this file is too big to display

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