diff --git a/relayer/path.go b/relayer/path.go index 0e6254b5e..57b23a9b4 100644 --- a/relayer/path.go +++ b/relayer/path.go @@ -3,6 +3,7 @@ package relayer import ( "context" "fmt" + "strings" clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" conntypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" @@ -12,8 +13,9 @@ import ( ) const ( - check = "✔" - xIcon = "✘" + check = "✔" + xIcon = "✘" + Expired = "EXPIRED" ) // Paths represent connection paths between chains @@ -249,6 +251,23 @@ func (p *Path) QueryPathStatus(ctx context.Context, src, dst *Chain) *PathWithSt if err := eg.Wait(); err != nil || srcCs == nil || dstCs == nil { return out } + + srcExpiration, srcClientInfo, errSrc := QueryClientExpiration(ctx, src, dst) + if errSrc != nil { + return out + } + + dstExpiration, dstClientInfo, errDst := QueryClientExpiration(ctx, dst, src) + if errDst != nil { + return out + } + + srcData := SPrintClientExpiration(src, srcExpiration, srcClientInfo) + dstData := SPrintClientExpiration(dst, dstExpiration, dstClientInfo) + + if strings.Contains(srcData, Expired) || strings.Contains(dstData, Expired) { + return out + } out.Status.Clients = true eg, egCtx = errgroup.WithContext(ctx)