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 () {
325
325
} ;
326
326
327
327
RedisClient . 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 ;
329
334
330
335
if ( err ) {
331
336
return self . emit ( "error" , new Error ( "Ready check failed: " + err . message ) ) ;
332
337
}
333
338
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 ( ':' ) ;
338
341
if ( parts [ 1 ] ) {
339
342
obj [ parts [ 0 ] ] = parts [ 1 ] ;
340
343
}
341
- } ) ;
344
+ }
342
345
343
346
obj . versions = [ ] ;
344
347
/* istanbul ignore else: some redis servers do not send the version */
@@ -348,6 +351,19 @@ RedisClient.prototype.on_info_cmd = function (err, res) {
348
351
} ) ;
349
352
}
350
353
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
+
351
367
// expose info key/vals to users
352
368
this . server_info = obj ;
353
369
Original file line number Diff line number Diff line change @@ -227,6 +227,8 @@ describe("The node_redis client", function () {
227
227
var end = helper . callFuncAfter ( function ( ) {
228
228
client . removeListener ( "connect" , on_connect ) ;
229
229
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 ) ;
230
232
done ( ) ;
231
233
} , 4 ) ;
232
234
client . get ( "recon 1" , helper . isString ( "one" , end ) ) ;
You can’t perform that action at this time.
0 commit comments