Browse Source

Merge pull request #142 from oxys/master

After a connection error, selected db, if it was set, is not restored
gh-pages
Matt Ranney 13 years ago
parent
commit
82cc930bc7
  1. 34
      index.js

34
index.js

@ -57,7 +57,8 @@ function RedisClient(stream, options) {
this.server_info = {};
this.auth_pass = null;
this.parser_module = null;
this.selected_db = null; // save the selected db here, used when reconnecting
var self = this;
this.stream.on("connect", function () {
@ -163,7 +164,12 @@ RedisClient.prototype.do_auth = function () {
self.auth_callback(err, res);
self.auth_callback = null;
}
// restore the selected db if needed
if (this.selected_db !== null) {
this.send_command('select', [this.selected_db]);
}
// now we are really connected
self.emit("connect");
if (self.options.no_ready_check) {
@ -200,6 +206,12 @@ RedisClient.prototype.on_connect = function () {
if (this.auth_pass) {
this.do_auth();
} else {
// restore the selected db if needed
if (this.selected_db !== null) {
this.send_command('select', [this.selected_db]);
}
this.emit("connect");
if (this.options.no_ready_check) {
@ -726,6 +738,24 @@ commands.forEach(function (command) {
Multi.prototype[command.toUpperCase()] = Multi.prototype[command];
});
// store db in this.select_db to restore it on reconnect
RedisClient.prototype.select = function (db, callback) {
var self = this;
this.send_command('select', [db], function (err, res) {
if (err === null) {
self.selected_db = db;
}
if (typeof(callback) !== 'undefined') {
callback(err, res);
}
});
}
RedisClient.prototype.SELECT = RedisClient.prototype.select;
// Stash auth for connect and reconnect. Send immediately if already connected.
RedisClient.prototype.auth = function () {
var args = to_array(arguments);

Loading…
Cancel
Save