- var con;
-
- if (global.config.restrict_server) {
- con = new IrcConnection(
- global.config.restrict_server,
- global.config.restrict_server_port,
- global.config.restrict_server_ssl,
- command.nick,
- {hostname: this.websocket.handshake.revdns, address: this.websocket.handshake.real_address},
- global.config.restrict_server_password);
-
- } else {
- con = new IrcConnection(
- command.hostname,
- command.port,
- command.ssl,
- command.nick,
- {hostname: this.websocket.handshake.revdns, address: this.websocket.handshake.real_address},
- command.password);
- }
-
- var con_num = this.next_connection++;
- this.irc_connections[con_num] = con;
-
- var irc_commands = new IrcCommands(con, con_num, this);
- irc_commands.bindEvents();
-
- con.on('connected', function () {
- return callback(null, con_num);
- });
-
- con.on('error', function (err) {
- console.log('irc_connection error (' + command.hostname + '):', err);
- // TODO: Once multiple servers implemented, specify which server failed
- //that.sendKiwiCommand('error', {server: con_num, error: err});
- return callback(err.code, null);
- });
-
- con.on('close', function () {
- that.irc_connections[con_num] = null;
- });
+ var options = {};
+
+ // Get any optional parameters that may have been passed
+ if (command.encoding)
+ options.encoding = command.encoding;
+
+ options.password = global.config.restrict_server_password || command.password;
+
+ this.state.connect(
+ (global.config.restrict_server || command.hostname),
+ (global.config.restrict_server_port || command.port),
+ (typeof global.config.restrict_server_ssl !== 'undefined' ?
+ global.config.restrict_server_ssl :
+ command.ssl),
+ command.nick,
+ {hostname: this.websocket.meta.revdns, address: this.websocket.meta.real_address},
+ options,
+ callback);