Skip to content

Commit 26cfc25

Browse files
galpeterhaesik
authored andcommitted
Simplify the TLS checks in WebSocket (#1922)
The TLS checks in the WebSocket module involved requesting the TLS module's keys as an array. This is uses extra memory, a simple true/false check on the TLS object is enough to validate if the 'require' call loaded the module. IoT.js-DCO-1.0-Signed-off-by: Peter Gal pgal.u-szeged@partner.samsung.com
1 parent 4632203 commit 26cfc25

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

src/js/websocket.js

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,15 @@
1313
* limitations under the License.
1414
*/
1515

16-
var net = require('net');
17-
var util = require('util');
18-
var EventEmitter = require('events').EventEmitter;
19-
var tls;
20-
try {
21-
tls = require('tls');
22-
} catch (e) {
23-
tls = {};
24-
}
16+
var net = require('net');
17+
var util = require('util');
18+
var EventEmitter = require('events').EventEmitter;
19+
var tls;
20+
try {
21+
tls = require('tls');
22+
} catch (e) {
23+
// tls remains undefined;
24+
}
2525

2626
util.inherits(Websocket, EventEmitter);
2727
util.inherits(WebsocketClient, EventEmitter);
@@ -51,8 +51,7 @@ function WebsocketClient(socket, handle) {
5151
return new WebsocketClient(socket, handle);
5252
}
5353

54-
if ((Object.keys(tls).length != 0 &&
55-
socket instanceof tls.TLSSocket) ||
54+
if ((tls && (socket instanceof tls.TLSSocket)) ||
5655
(socket instanceof net.Socket)) {
5756
this._socket = socket;
5857
this.readyState = 'CONNECTING';
@@ -130,26 +129,24 @@ function Server(options, listener) {
130129
this._netserver = null;
131130

132131
if (options.server) {
133-
if (Object.keys(tls).length != 0 && options.server instanceof tls.Server) {
132+
if (tls && (options.server instanceof tls.Server)) {
134133
this._netserver = options.server;
135134
emit_type = 'secureConnection';
136135
} else if (options.server instanceof net.Server) {
137136
this._netserver = options.server;
138137
}
139138
} else if (options.port) {
140139
if (options.secure == true) {
141-
if (Object.keys(tls).length == 0) {
140+
if (!tls) {
142141
throw new Error('TLS module is required to create a secure server.');
143142
}
144143
this._netserver = tls.createServer(options);
145-
this._netserver.on('error', this.onError);
146-
this._netserver.listen(options.port);
147144
emit_type = 'secureConnection';
148145
} else {
149146
this._netserver = net.createServer(options);
150-
this._netserver.on('error', this.onError);
151-
this._netserver.listen(options.port);
152147
}
148+
149+
this._netserver.listen(options.port);
153150
} else {
154151
throw new Error('One of port or server must be provided as option');
155152
}
@@ -369,7 +366,7 @@ Websocket.prototype.connect = function(url, port, path, callback) {
369366

370367
if (host.substr(0, 3) == 'wss') {
371368
this._secure = true;
372-
if (Object.keys(tls).length == 0) {
369+
if (!tls) {
373370
this._handle.onError('TLS module was not found!');
374371
}
375372
port = port || 443;

0 commit comments

Comments
 (0)