@@ -20,7 +20,6 @@ import (
2020 "bytes"
2121 "context"
2222 "encoding/json"
23- "errors"
2423 "io"
2524 "net/http"
2625 "time"
@@ -355,25 +354,34 @@ func (ac AdminClient) serverHealthInfo(ctx context.Context, healthDataTypes []ma
355354 decoder := json .NewDecoder (resp .Body )
356355 switch version {
357356 case madmin .HealthInfoVersion0 :
357+ info := madmin.HealthInfoV0 {}
358358 for {
359- var info madmin.HealthInfoV0
360- err = decoder .Decode (& info )
361- if err != nil && ! errors .Is (err , io .EOF ) {
362- return nil , version , err
359+ if err = decoder .Decode (& info ); err != nil {
360+ break
363361 }
362+ }
364363
365- healthInfo = mcCmd .MapHealthInfoToV1 (info , nil )
364+ // Old minio versions don't return the MinIO info in
365+ // response of the healthinfo api. So fetch it separately
366+ minioInfo , err := ac .Client .ServerInfo (ctx )
367+ if err != nil {
368+ info .Minio .Error = err .Error ()
369+ } else {
370+ info .Minio .Info = minioInfo
366371 }
372+
373+ healthInfo = mcCmd .MapHealthInfoToV1 (info , nil )
374+ version = madmin .HealthInfoVersion1
367375 case madmin .HealthInfoVersion :
376+ info := madmin.HealthInfo {}
368377 for {
369- var info madmin.HealthInfo
370- if err != nil && ! errors .Is (err , io .EOF ) {
371- return nil , version , err
378+ if err = decoder .Decode (& info ); err != nil {
379+ break
372380 }
373-
374- healthInfo = info
375381 }
382+ healthInfo = info
376383 }
384+
377385 return healthInfo , version , nil
378386}
379387
0 commit comments