@@ -26,6 +26,7 @@ import (
26
26
"github.com/lightninglabs/faraday/frdrpc"
27
27
terminal "github.com/lightninglabs/lightning-terminal"
28
28
"github.com/lightninglabs/lightning-terminal/litrpc"
29
+ "github.com/lightninglabs/lightning-terminal/subservers"
29
30
"github.com/lightninglabs/loop/looprpc"
30
31
"github.com/lightninglabs/pool/poolrpc"
31
32
"github.com/lightninglabs/taproot-assets/taprpc"
@@ -723,7 +724,37 @@ func (hn *HarnessNode) Start(litdBinary string, litdError chan<- error,
723
724
func (hn * HarnessNode ) WaitUntilStarted (conn grpc.ClientConnInterface ,
724
725
timeout time.Duration ) error {
725
726
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 {
727
758
return s >= lnrpc .WalletState_SERVER_ACTIVE
728
759
})
729
760
if err != nil {
0 commit comments