From 5cba2684096d898c910a38c96d7eca85628c813e Mon Sep 17 00:00:00 2001 From: James Coglan Date: Wed, 17 Dec 2014 22:12:56 +0000 Subject: [PATCH] Throw an error if drivers are created with unrecognised options. --- lib/websocket/driver.js | 7 ++++++- lib/websocket/driver/base.js | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/websocket/driver.js b/lib/websocket/driver.js index 83e0764..221ab27 100644 --- a/lib/websocket/driver.js +++ b/lib/websocket/driver.js @@ -6,7 +6,8 @@ // * http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 // * http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17 -var Client = require('./driver/client'), +var Base = require('./driver/base'), + Client = require('./driver/client'), Server = require('./driver/server'); var Driver = { @@ -39,6 +40,10 @@ var Driver = { return request.method === 'GET' && connection.toLowerCase().split(/ *, */).indexOf('upgrade') >= 0 && upgrade.toLowerCase() === 'websocket'; + }, + + validateOptions: function(options, validKeys) { + Base.validateOptions(options, validKeys); } }; diff --git a/lib/websocket/driver/base.js b/lib/websocket/driver/base.js index bb8097e..dd61457 100644 --- a/lib/websocket/driver/base.js +++ b/lib/websocket/driver/base.js @@ -7,6 +7,7 @@ var Emitter = require('events').EventEmitter, var Base = function(request, url, options) { Emitter.call(this); + Base.validateOptions(options || {}, ['maxLength', 'masking', 'requireMasking', 'protocols']); this._request = request; this._options = options || {}; @@ -22,6 +23,13 @@ var Base = function(request, url, options) { }; util.inherits(Base, Emitter); +Base.validateOptions = function(options, validKeys) { + for (var key in options) { + if (validKeys.indexOf(key) < 0) + throw new Error('Unrecognized option: ' + key); + } +}; + var instance = { // This is 64MB, small enough for an average VPS to handle without // crashing from process out of memory