File tree Expand file tree Collapse file tree 2 files changed +24
-6
lines changed Expand file tree Collapse file tree 2 files changed +24
-6
lines changed Original file line number Diff line number Diff line change @@ -325,20 +325,23 @@ RedisClient.prototype.on_ready = function () {
325325} ;
326326
327327RedisClient . prototype . on_info_cmd = function ( err , res ) {
328- var self = this , obj = { } , lines , retry_time ;
328+ var self = this ;
329+ var obj = { } ;
330+ var lines = res . toString ( ) . split ( "\r\n" ) ;
331+ var i = 0 ;
332+ var key = 'db' + i ;
333+ var line , retry_time , parts , sub_parts ;
329334
330335 if ( err ) {
331336 return self . emit ( "error" , new Error ( "Ready check failed: " + err . message ) ) ;
332337 }
333338
334- lines = res . toString ( ) . split ( "\r\n" ) ;
335-
336- lines . forEach ( function ( line ) {
337- var parts = line . split ( ':' ) ;
339+ for ( i = 0 ; i < lines . length ; i ++ ) {
340+ parts = lines [ i ] . split ( ':' ) ;
338341 if ( parts [ 1 ] ) {
339342 obj [ parts [ 0 ] ] = parts [ 1 ] ;
340343 }
341- } ) ;
344+ }
342345
343346 obj . versions = [ ] ;
344347 /* istanbul ignore else: some redis servers do not send the version */
@@ -348,6 +351,19 @@ RedisClient.prototype.on_info_cmd = function (err, res) {
348351 } ) ;
349352 }
350353
354+ while ( obj [ key ] ) {
355+ parts = obj [ key ] . split ( ',' ) ;
356+ obj [ key ] = { } ;
357+ while ( line = parts . pop ( ) ) {
358+ sub_parts = line . split ( '=' ) ;
359+ if ( sub_parts [ 1 ] ) {
360+ obj [ key ] [ sub_parts [ 0 ] ] = + sub_parts [ 1 ] ;
361+ }
362+ }
363+ i ++ ;
364+ key = 'db' + i ;
365+ }
366+
351367 // expose info key/vals to users
352368 this . server_info = obj ;
353369
Original file line number Diff line number Diff line change @@ -227,6 +227,8 @@ describe("The node_redis client", function () {
227227 var end = helper . callFuncAfter ( function ( ) {
228228 client . removeListener ( "connect" , on_connect ) ;
229229 client . removeListener ( "reconnecting" , on_recon ) ;
230+ assert . strictEqual ( client . server_info . db0 . keys , 2 ) ;
231+ assert . strictEqual ( Object . keys ( client . server_info . db0 ) . length , 3 ) ;
230232 done ( ) ;
231233 } , 4 ) ;
232234 client . get ( "recon 1" , helper . isString ( "one" , end ) ) ;
You can’t perform that action at this time.
0 commit comments