@@ -26,6 +26,7 @@ import (
2626 "github.com/lightninglabs/faraday/frdrpc"
2727 terminal "github.com/lightninglabs/lightning-terminal"
2828 "github.com/lightninglabs/lightning-terminal/litrpc"
29+ "github.com/lightninglabs/lightning-terminal/subservers"
2930 "github.com/lightninglabs/loop/looprpc"
3031 "github.com/lightninglabs/pool/poolrpc"
3132 "github.com/lightninglabs/taproot-assets/taprpc"
@@ -723,7 +724,37 @@ func (hn *HarnessNode) Start(litdBinary string, litdError chan<- error,
723724func (hn * HarnessNode ) WaitUntilStarted (conn grpc.ClientConnInterface ,
724725 timeout time.Duration ) error {
725726
726- err := hn .waitForState (conn , timeout , func (s lnrpc.WalletState ) bool {
727+ // First wait for Litd status server to show that LND has started.
728+ ctx := context .Background ()
729+ rawConn , err := connectLitRPC (
730+ ctx , hn .Cfg .LitAddr (), hn .Cfg .LitTLSCertPath , "" ,
731+ )
732+ if err != nil {
733+ return err
734+ }
735+
736+ litConn := litrpc .NewStatusClient (rawConn )
737+
738+ err = wait .NoError (func () error {
739+ states , err := litConn .SubServerStatus (
740+ ctx , & litrpc.SubServerStatusReq {},
741+ )
742+ if err != nil {
743+ return err
744+ }
745+
746+ lndStatus , ok := states .SubServers [subservers .LND ]
747+ if ! ok || ! lndStatus .Running {
748+ return fmt .Errorf ("LND has not yet started" )
749+ }
750+
751+ return nil
752+ }, lntest .DefaultTimeout )
753+ if err != nil {
754+ return err
755+ }
756+
757+ err = hn .waitForState (conn , timeout , func (s lnrpc.WalletState ) bool {
727758 return s >= lnrpc .WalletState_SERVER_ACTIVE
728759 })
729760 if err != nil {
0 commit comments